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

2022-09-03 07:41:38

是否可以在具有注释为 的方法的类中运行 JUnit 方法,但仅针对此测试忽略该方法?@Test@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() {
        //[...]
    }

}

答案 1

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


答案 2

如果它没用,那应该不是问题 - 再次运行设置是否有害处?

然而,我认为这是不可能的,并认为我是一个瘫痪的功能。

另一种方法是 - 将该测试移动到单独的测试类。


推荐