@Before/@BeforeEach遗传行为改变 JUnit4 / JUnit5
从 JUnit4 迁移到 JUnit5 时,我发现 JUnit4 和 JUnit5 的行为发生了变化,我想检查该更改是 JUnit4 中还是 JUnit5 中的错误,以及如何正确执行。
让我们假设以下结构:
一个基类
public class BaseTestClass {
@Before
public void setUp(){
System.out.println("Base Test Class");
}
}
从此基类继承的另一个类
public class InheritsFromBase extends BaseTestClass {
@Override
public void setUp() {
System.out.println("I inherit from base");
super.setUp();
}
}
和实际的测试类
public class ActualTests extends InheritsFromBase {
@Test
public void myTest(){
Assert.assertTrue(true);
}
}
如果我在JUnit 4中运行,那么两者的方法都会被调用。myTest()
setUp()
BaseTestClass
InheritsFromBase
将此代码迁移到 JUnit5 后,将不再调用这些方法。我不得不手动添加注释。setUp()
@BeforeEach
InheritsFromBase
生成以下类:
public class BaseTestClass {
@BeforeEach
public void setUp(){
System.out.println("Base Test Class");
}
}
public class InheritsFromBase extends BaseTestClass {
@Override
@BeforeEach
public void setUp() {
System.out.println("I inherit from base");
super.setUp();
}
}
public class ActualTests extends InheritsFromBase {
@Test
public void myTest(){
Assertions.assertTrue(true);
}
}
所以我的问题是:JUnit4中的行为是正确的还是在JUnit5中?