Posted at

JUnit4の@Beforeは継承してても有効

More than 5 years have passed since last update.


親テストクラス

package test;

import org.junit.Before;

public class ParentTest {

@Before
public void parentSetup() {
System.out.println("parent @Before");
}

}



子テストクラス

package test;

import org.junit.Before;
import org.junit.Test;

public class ChildTest extends ParentTest {

@Before
public void childSetup() {
System.out.println("child @Before");
}

@Test
public void test() {
System.out.println("@Test");
}
}



実行結果

parent @Before

child @Before
@Test

基本的に複数のテストクラスで共通の処理は Rule に書くべきなのだろうだけど、 jMockit の Expectations が Rule では上手く動作しなかったので、共通親テストクラスを作って、そこの @Before メソッド内で Expectations を宣言することで対処した。