在@DataProvider方法中引发Exception后,TestNG会跳过测试

时间:2014-05-26 14:40:41

标签: java unit-testing testing automated-tests testng

我有点困惑。

如何让TestNG报告测试错误?

// ...
@DataProvider(name = "foo")
public Object[][] provideData () {
    throw new SomeRuntimeException("Some error occurred. The test configuration "
            + "is somehow incorrect.");
}

这只会导致测试跳过。该异常甚至没有记录。 将其移至构造函数只会记录异常,但这还不够......

我想要一条很大的错误消息。

目前,使用专用(自我)测试方法可以完成至少显示测试失败的工作......

无论如何,知道testNG对错误的定义是怎样的会很好。

感谢您的任何提示!

1 个答案:

答案 0 :(得分:11)

这篇文章提出了一套公平的备选方案,并提供了详尽的解释:

Fail instead of Skip a Test when TestNG’s DataProvider throws an Exception

对我来说,最好的方法是为数据提供者添加测试,这里是想法的简要说明:

public class MyClass {

    @DataProvider(name = "my-data-provider")
    private Object [][] myProvider() {
        // ...
    }

    @Test
    public void testDataProviders() {
        Assert.assertTrue(myProvider().length > 0);
    }

    @Test
    // ... Real tests.

}