从 JUnit 中的“之前”方法中排除单个测试
我的测试类中的所有测试在执行每个测试之前都执行一个“before”方法(用JUnit的注释)。@Before
我需要一个特定的测试来不执行这个方法。
有没有办法做到这一点?
我的测试类中的所有测试在执行每个测试之前都执行一个“before”方法(用JUnit的注释)。@Before
我需要一个特定的测试来不执行这个方法。
有没有办法做到这一点?
您可以使用 TestRule 执行此操作。您可以使用一些描述的注释来标记要跳过之前的测试,然后在TestRule的apper方法中,您可以测试该注释并执行所需的操作,如下所示:
public Statement apply(final Statement base, final Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
if (description.getAnnotation(DontRunBefore.class) == null) {
// run the before method here
}
base.evaluate();
}
};
}
请考虑使用运行器来允许您拥有两个内部测试类。一个具有所需的方法,另一个没有。@Enclosed
@Before
@RunWith(Enclosed.class)
public class Outer{
public static class Inner1{
@Before public void setup(){}
@Test public void test1(){}
}
public static class Inner2{
// include or not the setup
@Before public void setup2(){}
@Test public void test2(){}
}
}