从JUnit4迁移到JUnit5时,我发现JUnit4和JUnit5的行为发生了变化,并想检查该变化是否是JUnit4或JUnit5中的错误,以及如何正确执行。
让我们假设以下结构:
一个基层
public class BaseTestClass {
@Before
public void setUp(){
System.out.println("Base Test Class");
}
}
Run Code Online (Sandbox Code Playgroud)
从该基类继承的另一个类
public class InheritsFromBase extends BaseTestClass {
@Override
public void setUp() {
System.out.println("I inherit from base");
super.setUp();
}
}
Run Code Online (Sandbox Code Playgroud)
和一个实际的测试班
public class ActualTests extends InheritsFromBase {
@Test
public void myTest(){
Assert.assertTrue(true);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行myTest()JUnit 4中,则setUp()两者的方法,BaseTestClass和InheritsFromBase被调用。
将这段代码迁移到JUnit5之后,setUp()不再调用这些方法。我必须在上手动添加@BeforeEach注释InheritsFromBase。
产生以下类别:
public class BaseTestClass {
@BeforeEach
public void setUp(){
System.out.println("Base Test Class");
}
} …Run Code Online (Sandbox Code Playgroud)