2016-03-29 13 views
0

異なるテストメソッドのサブセットをどのようにして実行できますか動的に JUnitを使用していますか?動的にJUnitテストメソッドを実行する

目的は、コマンドラインから引数(例:TestClass1#testMethod1,TestClass1#testMethod2,TestClass2#testMethod1)を使用して呼び出すことができるjarファイルを作成することです。単一のテストメソッドを実行することは、容易に使用して行うことができます。

Request request = Request.method('CLASSNAME', 'METHODNAME'); 
new JUnitCore().run(request); 

しかし、どのように私は実行するために多くのテストメソッドを追加することができますか?理想的には、これはすべてのメソッドに対してJUnitCore().run()を繰り返すのではなく、定義されたすべてのメソッドを1つの実行に組み合わせることです。これはどうすればできますか?

+0

こんにちはstrを(すでに書かれた)への呼び出しそのようなシナリオのコードを(コピー/ペースト)することなくテストシナリオを作成できますか? –

+0

@mbtdoorありがとうございます。 – str

答えて

1

は、私はあなたが実行するためのクラス/メソッドをフィルタリングすることができると思う:あなたは異なるテスト方法を組み合わせる可能性を持つようにしたいことを意味し、

Request request = Request.classes(... 
    Filter filter = new Filter() { 
     @Override 
     public boolean shouldRun(Description description) { 
      ... get class and method and decide... 

     } 
     @Override 
     public String describe() { 
      return null; 
     } 
    }; 
    request.filterWith(filter); 
+0

ありがとう、これは動作します。 'shouldRun'メソッドはすべてのクラスに対して呼び出され、次にそのクラスのすべてのメソッドについて(私が気づいていなかったもの)呼び出されます。 – str

0

おそらくrunClasses(java.lang.Class<?>... classes)(クラスに含まれるテストを実行)を使用できます。

http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html

+0

'runClasses'は完全なテストクラスを(名前が示すように)実行します。または私は間違っていますか? – str

+0

があなたに完全に合っているかもしれません。あなたの特定のテストをあるクラスに入れたら回避策になるかもしれません... – ZaoTaoBao

+0

各メソッドを独自のクラスに入れることは、決してオプションではありません。 – str

関連する問題