はい。テストスイートでのテストの前後に、セットアップメソッドとティアダウンメソッドを確実に実行できます。コードでデモンストレーションしましょう:
package com.test;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({Test1.class, Test2.class})
public class TestSuite {
@BeforeClass
public static void setUp() {
System.out.println("setting up");
}
@AfterClass
public static void tearDown() {
System.out.println("tearing down");
}
}
したがって、Test1
クラスは次のようになります。
package com.test;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}
}
...そしてあなたはそれTest2
が似ていると想像することができます。あなたが走った場合TestSuite
、あなたは得るでしょう:
setting up
test1
test2
tearing down
したがって、セットアップ/ティアダウンは、それぞれすべてのテストの前と後にのみ実行されることがわかります。
落とし穴:これは、テストスイートを実行していて、Test1とTest2を個別のJUnitテストとして実行していない場合にのみ機能します。Mavenを使用しているとおっしゃいましたが、Mavenのsurefireプラグインは、スイートの一部ではなく、個別にテストを実行するのが好きです。この場合、各テストクラスが拡張するスーパークラスを作成することをお勧めします。スーパークラスには、注釈付きの@BeforeClassメソッドと@AfterClassメソッドが含まれます。上記の方法ほどきれいではありませんが、うまくいくと思います。
失敗したテストの問題については、失敗したテストでビルドが続行されるようにmaven.test.error.ignoreを設定できます。これは継続的な練習としてはお勧めできませんが、すべてのテストに合格するまで機能するはずです。詳細については、Mavenのsurefireのドキュメントを参照してください。
post-integration-test
テストが失敗した場合、これはスキップされません。このwikiページも参照してください。