我想用 Log4j
实现写入log 文件。
我找到了一个简单的解决方案 - 用 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);
}
}
但它有一些缺点 - 这个测试总是通过,即使它失败了。
如果我在我的机器上工作并且能够看到控制台就没问题。但是这个测试推送到持续集成服务器上怎么办呢?
当测试失败时,是否存在任何其他方式将信息写入日志文件?
最佳答案
在 log.error(e)
下方添加 Assert.fail()
:
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.");
}
关于java - 测试失败时如何使用 Log4j 写入日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23792336/