1
有沒有辦法從ITestListener實現中實際檢測到已經「通過」的測試失敗?如何在偵聽器中通過TestNG測試失敗
我的用例是這樣的:我運行我的套件中的所有測試,然後在套件結束時執行一些其他操作。作爲這些行動的結果,我希望以前「通過」的測試現在被標記爲失敗。
從我的偵聽器內(這是擴展TestListenerAdapter
),我打電話:
result.setStatus(ITestResult.FAILURE);
result.setThrowable(t);
一些ITestResult對象。在其他地方聽衆,我已經覆蓋onFinish
像這樣:
@Override
public void onTestFailure(final ITestResult result) {
super.onTestFailure(result);
// TODO: This is updating the state of the test, but NOT causing it to fail
Reporter.setCurrentTestResult(result);
}
當我失敗的考驗,正在執行的回調。將Throwable
添加到測試結果中。一切都按我的預期發生。
然而,無論是生成報告和構建輸出是不正確的:
[testng] ===============================================
[testng] <redacted>Tests
[testng] Total tests run: 51, Failures: 0, Skips: 0
[testng] ===============================================
儘管這些測試結果的3正在更新失敗:
任何想法?
我不太瞭解TestNG,但是當你在監聽器中拋出異常時會發生什麼? –
在套件失敗的意義上,從偵聽器內部拋出異常「有效」,這實質上就是我正在嘗試做的事情。我現在正在做的是積累失敗(及其原因),如上所示,然後拋出一個運行時異常,如果失敗計數大於0.我只是擔心這是一個棘手的方式來做事,最終會如果我升級我的TestNG版本,請打破。 – Ryan