私のテストには多くの共通ロジックがあるため、拡張して共有することにしました。私は 2 つのクラスを書きましTestNumberOne
たTestBase
。
TestBase.java
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
/**
* @author Pavel
* @since 2013-03-03
*/
public class TestBase {
@BeforeClass
public static void beforeClass() {
System.out.println("beforeClass() in TestBase");
System.out.flush();
}
@AfterClass
public static void afterClass() {
System.out.println("afterClass() in TestBase");
System.out.flush();
}
@Before
public void before() {
System.out.println("before() in TestBase");
System.out.flush();
}
@After
public void after() {
System.out.println("after() in TestBase");
System.out.flush();
}
}
TestNumberOne.java
import org.junit.*;
/**
* @author Pavel
* @since 2013-03-03
*/
public class TestNumberOne extends TestBase {
@Test
public void anyTest() {
System.out.println("anyTest() in TestNumberOne");
System.out.flush();
}
}
テストを実行すると、次のような奇妙な出力が得られます。
before() in TestBase
anyTest() in TestNumberOne
after() in TestBase
beforeClass() in TestBase
afterClass() in TestBase
どうしてこんなに変な順番なの?また、JUnit テスト クラスを拡張する規則はありますか?
アップデート:
- テストはIDEAで実行されます
- このような奇妙な結果を得るために、私はそれらを数回実行しました (他の結果は期待通りでした)