我正在使用TestNG和Java。TestNG無法從線程中失敗測試
我有一個數據提供程序方法
@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()
我想,以決定是否測試失敗或通過內。我試圖通過使用Assert.fail();
內部運行方法來做到這一點。 它運行精細地順序執行,但給出了在並行執行一個異常
Exception in thread "T3" java.lang.AssertionError: null
。
我明白這個問題是由於斷言錯誤本應被測試方法所捕獲而引起的。因此,在順序執行的情況下,它運行良好並且測試失敗,但是在並行執行的情況下,當我們調用Assert.fail()時,測試方法已經執行。
任何人都可以告訴我如何從run()方法失敗測試嗎?
你可能會更清楚你的問題是什麼。在單個TestNG線程中,您正在生成自己的多個線程,並希望將這些多線程中發生的結果傳播回單個TestNG線程以報告結果。看起來很簡單,但很容易在TestNG線程和自己的線程之間混淆。您沒有提供關於您在做什麼的足夠信息,但是當您可能不需要時,我懷疑您的分支線程,而是可以讓TestNG數據提供者管理您的線程。 – djangofan