Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TestNG在@DataProvider方法中引发异常后跳过测试_Java_Unit Testing_Testing_Automated Tests_Testng - Fatal编程技术网

Java TestNG在@DataProvider方法中引发异常后跳过测试

Java TestNG在@DataProvider方法中引发异常后跳过测试,java,unit-testing,testing,automated-tests,testng,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为测试报告错误

// ...
@DataProvider(name = "foo")
public Object[][] provideData () {
    throw new SomeRuntimeException("Some error occurred. The test configuration "
            + "is somehow incorrect.");
}
这只会导致跳过测试。这个异常甚至没有被记录下来。 将其移动到构造函数只会记录异常,但这还不够

我想要一个大的错误消息

目前,使用专用(自)测试方法进行的工作至少显示了一些测试失败

无论如何,如果知道testNG对错误的定义是什么样子的,那就太好了


谢谢你的提示

这篇文章提出了一套合理的备选方案,并给出了足够详细的解释:

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

public class MyClass {

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

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

    @Test
    // ... Real tests.

}

你能告诉我们调用这个的代码吗?你确定它没有以某种方式包装在一个
try/catch
中吗?引用数据提供程序的方法在任何方面都不知道有任何异常。据我所知,测试方法本身不调用数据提供程序。使用Dataprovider提供的参数调用测试方法。Dataprovider是测试前导的一部分,因此不会作为错误报告。您有责任捕获并记录DataProvider方法中的任何错误。太糟糕了。我想知道是否有可能直接触发错误。它不需要在数据提供程序中完成。我的意思是,总的来说,有办法吗?这个问题已经很老了,但在我看来,这个问题仍然是热门话题。非常感谢你!这篇文章真的很有帮助。