运行Junit @Test忽略@ Before/@ After

m3t*_*man 12 java junit unit-testing

是否可以@Test在具有注释方法的类中运行JUnit 方法@Before,但是@Before仅忽略此方法的方法?

编辑:我感兴趣的是JUnit是否支持此功能,而不是解决方法.我知道一些变通方法,比如在另一个类中移动测试或删除注释并手动调用setUp()每个测试方法.

假设在一个类中有30个测试,其中29个@Before真正简化了测试初始化​​,但是对于它们中的一个(或多个)是无用的/它使事情变得复杂.

public class MyTestClass {

    @Before
    public void setUp() {
        //setup logic
    }

    @Test
    public void test1() {
        //[...]
    }

    @Test
    public void test2() {
        //[...]
    }

    //more tests here

    @Test(ignoreBefore = true, ignoreAfter = true //false by default)
    //something equivalent to this
    public void test20() {
        //[...]
    }

}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ell 5

您可以使用TestRule执行此操作.请参阅我在JUnit中从'before'方法中排除单个测试的答案.基本上,实现ExternalResource,并在apply方法中,检查方法上是否有特定的注释,如果有,则不要运行before/after方法.你必须专门调用你的规则之前/之后.