我如何使用TestNG SkipException?

时间:2014-02-06 00:36:35

标签: unit-testing exception testing testng

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

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

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

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

4 个答案:

答案 0 :(得分:11)

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

但是,当我把它扔进@BeforeMethod时,它完美无缺。很高兴我能搞清楚。 documentation of the class表明它可以在任何@Configuration注释方法中使用,但是我正在做的事情不允许我这样做。

@BeforeMethod
public void beforeMethod() {
    throw new SkipException("Testing skip.");
}

答案 1 :(得分: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...");
    }

    ...
}

Maven输出:

Results :

Tests run: 85, Failures: 0, Errors: 0, Skipped: 2

答案 2 :(得分:0)

虽然使用 Apache POI 的 DataProvider 空测试创建单独的检查 @BeforeTest 我们可以跳过数据库为空或空在这种情况下我们可以使用此跳过测试与行检查为空使用布尔真检查然后跳过期望不去整个检查它有 1000 个输入检查而不是它跳过那个数据提供者为空...

答案 3 :(得分:-2)

要从@Test注释选项中跳过测试用例,可以使用带有@Test注释的'enable = false'属性,如下所示

@Test(enable=false)

这将跳过测试用例而不运行它。但是其他测试,设置和拆解都会毫无问题地运行。