junitスイートテスト、フェーズ内:すべて@before、次にすべて@test、そしてすべて@after
-
29-09-2019 - |
質問
すべての@beforeメソッド、すべての@Testメソッド、すべての@Afterメソッドを実行するJunitランナーが欲しいです。
これが私のシステムテストの仕組みです。 @beforeメソッドが実行され、テストデータとシナリオをセットアップします。アプリケーションが開始されます。次に、@Testメソッドがバックグラウンドで実行されている状態で実行されます。これらの@Testメソッドは、データを変更したり、アプリケーションに応答したりできます。その後、フレームワークはアプリケーションが仕上げられるのを待ちます。その後、@Afterメソッドが実行され、テスト結果が確認されます。
私はすでにJunitアノテーション、アサーション方法、およびその他のさまざまなビットを使用しています。しかし、このようにテスト方法を実行するためにJunitsランナーを使用する方法を理解することはできません。 Junit 4.8の「コンピューター」インターフェイスのヘッドやテールを作成したり、これにルールを適用する方法を把握できませんでした。
解決
これはJunitが行うことではありません。 Junitには、独立した単体テストを強調する設計哲学があります。そのため、システムテストの自然なフレームワークではありません。やりたいことは、テストにうまく適合します(設計目標として、ユニットテストとシステムテストの両方にまたがります)。
junitで@beforedと@afterは前後に実行されます 各 テスト。この種のものをJunitにシューズホーンしてスイートを使用して、すべてのテストを参照し、すべてのセットアップと分解を担当するため、スイートの@beforeclassと@afterclassメソッドはスイートの前後に実行されます。正しくシステムテストのすべてになる可能性があります。
Junitアプローチで大きくなった場合、コードには多くの組織的な課題があります。これがあなたがやりたいことの大部分であるかどうかを考慮し、代替フレームワークを検討することをお勧めします。
他のヒント
実際のテスト方法を1つだけ作成することでこれを解決できると思います。コールは実際のテストであり、これをsuchと宣言しません。
ちょっと好き:
@Before
public void beforeTest(){}
@After
public void afterTest(){}
@Test
public void test(){
test1();
test2();
test3();
}
public void test1(){}
public void test2(){}
public void test3(){}