我試圖從我的afterSuite類訪問集中的測試數據對象,並使用Reporter.log()將一段數據記錄到@aftersuite中的testNG記者。你可以在@Aftersuite中使用TestNG Reporter.log()嗎?
這裏是我的代碼:
@AfterSuite(alwaysRun = true)
public void aftersuite()
{
int count = glikkerData.getGlickers();
Reporter.log("Number of glikkers: " + count);
}
我沒有收到在TestNG的報告所需的語句。 Reporter.log()在@aftersuite函數中無效嗎?
更新 - 具體方案
我有一個TestNG的項目叫 「的ImageManager」。它使用我創建的一個名爲「CustomJerseyClient」的獨立庫。此CustomJerseyClient項目使用log4j來記錄來自Jersey客戶端請求的連接錯誤。同樣在CustomJerseyClient中,我創建了一個自定義log4j appender(我稱之爲log4j appender'TestNGReportAppender' - see this S.O. post),它將所有loggingEvents添加到靜態數組日誌事件中。
public class TestNGReportAppender extends AppenderSkeleton {
private static ArrayList<LoggingEvent> listEvents = new ArrayList<LoggingEvent>();
public static ArrayList<LoggingEvent> getListEvents() { return listEvents; }
@Override
protected void append(final LoggingEvent event) {
listEvents.add(event);
Reporter.log(eventToString(event));
}
private String eventToString(final LoggingEvent event) {
...
}
public boolean requiresLayout() {
return true;
}
}
的目標是穿越從CustomJerseyClient記錄這一事件的靜態數組和計數連接錯誤的數量,在所有的ImageManager測試完成之後。連接錯誤數據已經從CustomJerseyClient向上傳遞到ImageManager(通過TestNGReportAppender),但現在我無法在所有測試執行完成後通過TestNG Reporter報告數據 - 現在數據停留在項目中。
該陳述沒有顯示出來,或者計數是否與預期不同? – mfulton26
它沒有顯示出來。 –
我剛剛發現[此鏈接](https://groups.google.com/forum/#!msg/testng-users/8ncZt1ga7Bs/Jk287VvaoVcJ)它暗示(請參閱最新的評論)Reporter.log()不在@aftersuite工作。他們建議在ITestListener中使用onTestFinish()。 –