JUnit 4でTestSuiteを作成する方法を見つけることができましたが、TestSetupでスイートをラップするv3の可能性が本当にありません。
JUnit 4のテストケーススイートに対して@ BeforeClass/@ AfterClassセットアップを実行する方法についてのアイデアはありますか?
つまり.
@RunWith(Suite.class)
@Suite.SuiteClasses({Test1.class, Test2.class})
public class MyTestSuite {
@BeforeClass public static void setUpClass() {
// Common initialization done once for Test1 + Test2
}
@AfterClass public static void tearDownClass() {
// Common cleanup for all tests
}
}
残念ながら、上記のコードは機能しません。 @BeforeClass
は、テストクラスごとにのみ機能します。
ここに私が持っているものがあり、それはうまく動作します。
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({ TestSuite1.class, TestSuite2.class })
public class CompleteTestSuite {
@BeforeClass
public static void setUpClass() {
System.out.println("Master setup");
}
@AfterClass public static void tearDownClass() {
System.out.println("Master tearDown");
}
}
これが私のテストスイート1です(テストスイート2でも同じことを行います)。
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(value = Suite.class)
@SuiteClasses(value = { TestCase1.class })
public class TestSuite1 {}
そして、これが私のテストクラスです。 testcase1とtestcase2の両方を作成します。
import static org.junit.Assert.assertEquals;
import org.junit.BeforeClass;
import org.junit.Test;
public class TestCase1 {
@BeforeClass
public static void setUpClass() {
System.out.println("TestCase1 setup");
}
@Test
public void test1() {
assertEquals(2 , 2);
}
}
5つのクラスが必要ですcompletesuite suite1 suite2 test1 test2
ビルドパスにJunitがあることを確認してください。これは実行されるはずです!
これが出力です
Master setup
TestCase1 setup
Master tearDown