2014-06-20 73 views
2

我們正在爲我們的項目使用logback和TestNG。 Logback設置爲輸出到控制檯和文件,當我們正在進行測試(在logback-test.xml文件中設置)時,TRACE級別被輸出。在持續集成服務器上使用logback,TestNG時的良好做法

現在,有兩個問題。首先,在CI服務器(TeamCity)上運行時,我們會得到一個700 + MB BuildLog文件,這是浪費空間(已經有一個日誌文件),並且會重載瀏覽器。其次,我們無法在日誌中打印斷言錯誤。因爲這些被TestNG捕獲,所以它們只出現在TeamCity的用戶界面中,但不在文件日誌中。

這裏有什麼好的方法?我正在考慮在控制檯上的INFO級別進行日誌記錄,如果在TeamCity下運行,則另外使用TRACE。這可以通過使用過濾器來實現,通過環境變量進行控制。對於第二個問題,我還沒有一個想法。

TIA, 尼古拉

回答

0

爲了獲得AssertionError S IN的文件記錄打印出來,我最終實現TestNG的ITestListener

public class ListenerLogger implements ITestListener 
{ 
    private static final Logger LOG = LoggerFactory.getLogger(ListenerLogger.class); 

    @Override 
    public void onTestStart(ITestResult result) 
    { 
    LOG.info("Starting {}.{} with parameters {}", result.getTestClass().getName(), result.getTestName(), result.getParameters()); 
    } 

    @Override 
    public void onTestSuccess(ITestResult iTestResult) 
    { 
    LOG.info("Test successful"); 
    } 

    // This belongs to ITestListener and will execute only on the event of fail test 
    public void onTestFailure(ITestResult result) 
    { 
    LOG.error("Test failed!", result.getThrowable()); 
    } 
    ... 
} 

並補充說,到項目我的pom.xml在CI下:

<dependency> 
    <groupId>my.awesome.project</groupId> 
    <artifactId>ci-helper</artifactId> 
    <version>1.0.1</version> 
    <scope>test</scope> 
</dependency>