我正在使用TestNG和Java。
我有一个数据提供者方法
@DataProvider
public static Object[][] dataProviderMethod() {
return testCaseDataProvider;
}
和测试方法
@Test(dataProvider = "dataProviderMethod")
public static void executeTestCase (SheetProvider sheetData, boolean parallel) {
//some code
if(condition) {
//spawn threads
}
else {
//do not spawn threads. directly call run method.
}
}
现在在run()
内我想确定测试是否失败或通过。我试图通过在run方法中使用Assert.fail();
来做到这一点。
它可以顺序执行,但是给出了一个异常
Exception in thread "T3" java.lang.AssertionError: null
并行执行。
我理解这个问题是因为断言错误应该被测试方法捕获。因此,在顺序执行的情况下,它运行正常并且未通过测试,但是在并行执行的情况下,测试方法已经在我们调用Assert.fail()时执行。
任何人都可以告诉我如何通过run()方法测试失败?
答案 0 :(得分:1)
您的测试显示的真正问题是异常在并行线程中发生时不会委托给调用者,您应该更改代码以将任何执行异常传递给调用者,因为异常也可能发生在正常情况下程序员犯了错误。如果错误传递回调用者,那么问题就解决了。