2012-04-12 14 views
9

私はAPIを使用してJUnitテストスイートを呼び出そうとしています。JUnit4を使用してプログラムでテストスイートを実行するにはどうすればよいですか?

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    Test1.class, 
    Test2.class, ... 
}) 

しかし、例えばJUnitCoreを使用して、Java APIを使用してスイート全体をトリガする方法があります:私はあなたが以下を使用してテストクラスをアップし、スイートできることをご存知ですか?

はたとえば、次のコードを使用してテストをトリガすることができます

Runner r = 
try { 
    r = new BlockJUnit4ClassRunner(Class.forName(testClass)); 
} catch (ClassNotFoundException | InitializationError e) { 
    // handle 
} 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(r)); 

更新: APIから

、スイートクラス自体は、したがって、ランナーであると思われます次のコードはうまくいくようです:

Suite suite = new Suite(klass, new RunnerBuilder() { 
... // Implement methods 
}); 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(suite)); 

しかし、私はこれが推奨される方法であるかどうか、またはt彼はコードの上にいる。

答えて

12

ただJUnitCoreにスイートクラスの名前を指定します。

Computer computer = new Computer(); 

JUnitCore jUnitCore = new JUnitCore(); 
jUnitCore.run(computer, MySuite.class); 
+0

ありがとうマシュー!私は間違いなくこれを試してみます。その間、私のアップデートでコードスニペットの推奨事項はありますか? – Neel

4

することもでき、そのコマンドプロンプトを使用して

のJava org.junit.runner.JUnitCoreテストクラス名として

+5

私はこれが「プログラム的に」と認めるとは思わない。 – oers

+1

runtime.execを使用して呼び出すと、 –

+2

またはJunitCore.main(testClassName) –

関連する問題