質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

5427閲覧

Junit SuiteClassesアノテーションの引数を動的に指定したい

AkiraTerasawa

総合スコア20

JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/06/07 07:37

Javaの初心者です。
Junitの@SuiteClassesアノテーションの引数にテストスイートクラスを指定するとありますが、
ここを動的引き渡したいです。
できることなら、プロパティファイルにテストするクラスを記載し、それを渡したいと考えていますが、
こんなことが可能でしょうか。
賢者の皆様よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Runnerを自作すれば実行可能かと思います。

java

1import java.util.ArrayList; 2import java.util.Arrays; 3import java.util.List; 4 5import org.junit.runner.Description; 6import org.junit.runner.Runner; 7import org.junit.runner.notification.RunNotifier; 8import org.junit.runners.BlockJUnit4ClassRunner; 9import org.junit.runners.ParentRunner; 10import org.junit.runners.model.InitializationError; 11 12public class ClassRunner extends ParentRunner<Runner> { 13 14 private final List<Runner> runners; 15 16 public ClassRunner(Class<?> testClass) throws InitializationError { 17 super(testClass); 18 19 List<Class<?>> classList = getClassList(); 20 runners = new ArrayList<>(); 21 for (Class<?> clazz : classList) { 22 runners.add(new BlockJUnit4ClassRunner(clazz)); 23 } 24 } 25 26 private List<Class<?>> getClassList() { 27 28 List<String> classNameList = getClassNameList(); 29 List<Class<?>> classList = new ArrayList<>(); 30 31 for (String className : classNameList) { 32 try { 33 classList.add(Class.forName(className)); 34 } catch (ClassNotFoundException e) { 35 // 例外処理 36 throw new RuntimeException("クラスが存在しない : " + className); 37 } 38 } 39 40 return classList; 41 } 42 43 private List<String> getClassNameList() { 44 45 // クラス名称(フルパス)のリストを作成する 46 // ここにプロパティファイルから取得する処理を記述 47 return Arrays.asList("hoge.fuga.HogeHoge"); 48 } 49 50 @Override 51 protected List<Runner> getChildren() { 52 return runners; 53 } 54 55 @Override 56 protected Description describeChild(Runner child) { 57 return child.getDescription(); 58 } 59 60 @Override 61 protected void runChild(Runner child, RunNotifier notifier) { 62 child.run(notifier); 63 } 64 65}

Suiteと同じように使います。

java

1@RunWith(ClassRunner.class) 2public class HogeTests { 3 4}

投稿2017/06/21 08:26

編集2017/06/21 08:30
7tsuno

総合スコア310

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AkiraTerasawa

2017/06/22 00:34

返信が遅くなりまして申し訳ありません。 ご回答頂ありがとうございます。 頂いた回答を元に試して見ます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問