我想编写一个 BaseTest
类,它只为所有扩展子类提供一个“通用的 setUp()
方法”:
public class BaseTest {
@Before
public void setUp() {
System.out.println("setUp() was called!");
// Doesn't really matter what this is doing...
EnvironmentConfigurator.configureEnvForTesting();
}
}
然后:
public class WidgetTest extends BaseTest {
@Test
public void test1() {
fail();
}
@Test
public void test2() {
fail();
}
}
理想情况下,每次执行由 @Test
注释的子类方法时,JUnit 将首先调用 BaseTest#setUp()
方法,该方法会执行任何操作(不这真的很重要)。也许它将一些模拟状态重置为初始值,以便每个测试都可以从“干净的平板”开始,等等。同样,这并不重要。
不幸的是,当我运行这段代码时,我只看到 setUp() 被调用了!
打印到屏幕上一次,很明显 BaseTest
不是不要按照我想要的方式“包装”我的 @Test
方法。有什么办法可以做到这一点?提前致谢!
最佳答案
我刚刚运行了这个程序,两个测试方法都被调用了,而且两次 setUp 都被调用了。
如果您在派生类中也有一个 @Before
注释方法,那么您需要将基类设置方法命名为不同的名称,例如setUpBase() 因为如果方法名称相同,则仅调用派生类中的 @Before
注释方法,因为它将覆盖基类中的方法。
关于java - JUnit 基础测试自动设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123831/