@Before
でマークされたメソッドに除外したいくつかの一般的なセットアップコードがあります。ただし、このすべてのコードをすべてのテストで実行する必要はありません。 @Before
メソッドが特定のテストの前にのみ実行されるようにマークする方法はありますか?
セットアップコードを必要としないテストを別のテストクラスに移動するだけです。保持するのに役立つであろうテストに共通する他のコードがある場合は、それをヘルパークラスに移動します。
または TestNG を使用します。テストをより細かく制御できます。
関連するコードを内部クラスに移動する点に完全に同意します。だからここで私がやったこと。
これがコードです:
class Testing {
@Test
public void testextmethod1() {
System.out.println("test ext method 1");
}
@Nested
class TestNest{
@BeforeEach
public void init() {
System.out.println("Init");
}
@Test
public void testmethod1() {
System.out.println("This is method 1");
}
@Test
public void testmethod2() {
System.out.println("This is method 2");
}
@Test
public void testmethod3() {
System.out.println("This is method 3");
}
}
@Test
public void testextmethod2() {
System.out.println("test ext method 2");
}
}
これが出力です
test ext method 1
test ext method 2
Init
This is method 1
Init
This is method 2
Init
This is method 3
注:これがJunit4でサポートされているかどうかはわかりません。私はJUnit5でこれをやっています
@Beforeについてはわかりませんが、最近、@ Afterブロックを選択的に実行するための戦略を思いつきました。実装は簡単でした。テストクラスの一部として、いくつかのフラグをデフォルト値に設定しています。それらは@Beforeクラスのデフォルト値にリセットされます。フラグに固有のことを行う必要があるクラスでは、それらのフラグを設定し、@ Afterでそれぞれのジョブを実行するためにフラグ値を確認します。