我如何使用TestNG SkipException?

dja*_*fan 9 testing testng unit-testing exception

如何有效地使用TestNG 抛出新的SkipException()?有人有例子吗?

我尝试在测试方法开始时抛出此异常,但它会破坏拆卸,设置,方法等,并且通过导致一些(并非所有)后续测试也被跳过而导致附带损坏,并显示TestNG HTML报告上的一堆垃圾.

我使用TestNG来运行我的单元测试,我已经知道如何使用@Test注释的选项来禁用测试.我希望我的测试在我的报告中显示为"存在"但不计算在净结果中.换句话说,如果有一个@Test注释选项来"跳过"测试,那就太好了.这样我就可以将测试标记为忽略sortof,而不会使测试从所有测试列表中消失.

在@Test运行之前,是否需要在@BeforeXXX中抛出"SkipException"?这可能解释了我所看到的奇迹.

dja*_*fan 12

是的,我的怀疑是正确的.在@Test中抛出异常不起作用,也没有将它放在@BeforeTest中,而我在类中使用并行.如果这样做,异常将破坏测试设置,TestNG报告将在所有相关的@Configuration方法中显示异常,甚至可能导致后续测试失败而不会被跳过.

但是,当我把它扔进@BeforeMethod时,它完美无缺.很高兴我能搞清楚.该类文档表明它可以在任何@Configuration注释方法中工作,但是我正在做的事情不允许我这样做.

@BeforeMethod
public void beforeMethod() {
    throw new SkipException("Testing skip.");
}
Run Code Online (Sandbox Code Playgroud)


Jef*_*ley 5

我正在使用TestNG 6.8.1.

我有一些@Test方法,我扔SkipException,我没有看到任何古怪.它似乎与预期一样有效.

@Test
public void testAddCategories() throws Exception {
    if (SupportedDbType.HSQL.equals(dbType)) {
        throw new SkipException("Using HSQL will fail this test. aborting...");
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

Maven输出:

Results :

Tests run: 85, Failures: 0, Errors: 0, Skipped: 2
Run Code Online (Sandbox Code Playgroud)