繁体   English   中英

使用Log4j时,如何在测试失败时写入日志文件

[英]How to write to log file when test fail, with Log4j

我想用Log4j实现写入日志文件。

我找到了一个简单的解决方案 - 环绕测试体,带有try - catch

@Test(groups = "GMAIL_PAGE")
public void testAllMailLink() {
    try {
        List<WebElement> allMessages = page.takeAllMessage();
        page.clickInboxLink();
        List<WebElement> inboxMessages = page.takeInboxMessage();
        page.clickDraftLink();
        List<WebElement> draftMessages = page.takeDraftMessage();

        Assert.assertTrue(allMessages.containsAll(inboxMessages),
                "All messages doesn't contains all inbox messages");
        Assert.assertTrue(allMessages.containsAll(draftMessages),
                "All messages doesn't contains all draft messages");
        log.info("test is passed");
    } catch (Exception e) {
        log.error(e);
    }
}

但它有一些缺点 - 这个测试总是通过,即使它失败了。

如果我在我的机器上工作并且能够看到控制台,那就没问题。 但是当将此测试推送到Continuous Integration服务器时该怎么办?

当测试失败时,是否存在将信息写入日志文件的任何其他方式?

log.error(e)下面添加Assert.fail() log.error(e)

catch (Exception e) {
    log.error(e);
    Assert.fail();
}

顺便说一句,你正在调用Logger#error(Object) ,它使用e.toString() 在这种情况下,最好使用描述性消息,然后传递异常以获取相应的堆栈跟踪:

catch (Exception e) {
    log.error("Some descriptive message should go here.", e);
    Assert.fail("Some descriptive message should go here as well.");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM