Eclipse だけで開発された Java コードベースがあります。JUnit4 テストのセットがあり、実行予定時期に基づいて相互に排他的な 2 つのサブセットに分割できます。
- 「標準」テストは、開発者がテスト クラス (またはそれを含むプロジェクト) を右クリックし、[実行] > [JUnit テスト] を選択したときに実行する必要があります。これは、Eclipse での JUnit の動作とまったく同じです。
- 「ランタイム」テストは、アプリケーションが特定の状態で起動されたときに、アプリケーション内からプログラムによって呼び出された場合にのみ実行する必要があります。
2 つのタイプのテストは、同じ Java パッケージ内で互いに隣接している場合があります。(理想的には、それらを同じクラスに混在させることができますが、それは難しい要件ではありません。)
私の最初の解決策は、「ランタイム」テスト クラスに新しい
@TestOnLaunch
注釈を付けることでした。アプリケーションはこれらのクラスを見つけることができ@Test
、
JUnitCore.run(Class<?>...)
. @Test
ただし、カスタム クラス アノテーションの意図に関係なく、Eclipse テスト ランナーは でアノテーションが付けられた任意のメソッドを実行するため、これらのテストは上記の「標準」シナリオに漏れます。
次に@TestOnLaunch
アノテーションをメソッドレベルに移動してみました。JUnitCore
これにより、「ランタイム」テストの「標準」シナリオへの「漏れ」が防止されますが、これらのテスト メソッドを実行できないようです。run.(Request)
たとえば、正しいクラスとメソッドを対象とした は、おそらく注釈Request
が見つからないため (存在しないため)、「実行可能なメソッドがありません」で失敗します。@Test
この種の問題を解決する「JUnit の方法」があるかどうかを知りたいと思っています。Runner
おそらく、 ( で注釈が付けられたメソッドを実行するために)自分で作成することもできますが、@TestOnLaunch
これは正しいアプローチですか? もしそうなら、どうすれば、呼び出しに似た、一連のクラスを使用してプログラムでテストを開始できJUnitCore.run(Class<?>...)
ますか?