JUnit基本测试自动setUp

IAm*_*aja 6 java junit unit-testing

我想编写一个BaseTestsetUp()为所有扩展子类提供"通用方法"的类:

public class BaseTest {
    @Before
    public void setUp() {
        System.out.println("setUp() was called!");

        // Doesn't really matter what this is doing...
        EnvironmentConfigurator.configureEnvForTesting();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

public class WidgetTest extends BaseTest {
    @Test
    public void test1() {
        fail();
    }

    @Test
    public void test2() {
        fail();
    }
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,每次@Test执行注释的子类方法时,JUnit都会首先调用该BaseTest#setUp()方法,该方法执行任何操作(并不重要).也许它将一些模拟状态重置为一个初始值,这样每个测试都可以从一个"干净的石板"等开始.再次,这并不重要.

不幸的是,当我运行这段代码时,我只看到一次setUp() was called!打印到屏幕上,所以显然不是按照我想要的方式"包装"我的方法.有没有办法实现这个目标?提前致谢!BaseTest@Test

bla*_*ank 17

我刚刚运行了这个,并调用了两个测试方法,并且两次调用setUp.

如果你@Before在派生类中有一个带注释的方法,那么你需要将基类设置方法命名为不同的东西,例如setUpBase(),因为如果方法名相同,那么只@Before调用派生类中带注释的方法.将覆盖基类中的方法.