2016-02-19 54 views
0

我試圖從我的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報告數據 - 現在數據停留在項目中。

+0

該陳述沒有顯示出來,或者計數是否與預期不同? – mfulton26

+0

它沒有顯示出來。 –

+0

我剛剛發現[此鏈接](https://groups.google.com/forum/#!msg/testng-users/8ncZt1ga7Bs/Jk287VvaoVcJ)它暗示(請參閱最新的評論)Reporter.log()不在@aftersuite工作。他們建議在ITestListener中使用onTestFinish()。 –

回答

0

Reporter.Log無法直接或通過TestListenerAdapter後套件,我只是試過它。你能告訴我,如果你的發現是一樣的嗎?

你能解釋一下你的用例嗎?你想要計算什麼?你的報告機制是什麼樣的?如果它是一個通用用例,我可能會創建一些重要的東西。

+0

好吧,我更新了我的問題,並提供了更多詳細信息。我一直無法讓Reporter.Log()直接工作。我還沒有嘗試過TestListenerAdapter,我可以嘗試下一步。 –

相關問題