Java TestNG控制台输出到log4j.log
我需要将输出结果(失败或成功)输入到log4j输出中Java TestNG控制台输出到log4j.log,java,automation,log4j,testng,Java,Automation,Log4j,Testng,我需要将输出结果(失败或成功)输入到log4j输出中 Assert.assertTrue(availresponse); 有没有办法将TestNG控制台输出添加到log4j.log文件中 如果需要,可以使用If。。else构造以执行日志记录 if(null != availresponse) { //log success message } else { //log failure message } 另一种方法是编写一个自定义类来实现TestListenerAdapter。您
Assert.assertTrue(availresponse);
有没有办法将TestNG控制台输出添加到log4j.log文件中 如果需要,可以使用
If。。else
构造以执行日志记录
if(null != availresponse) {
//log success message
} else {
//log failure message
}
另一种方法是编写一个自定义类来实现
TestListenerAdapter
。您可以看到完整的示例代码。使用记录器包装断言,例如
log.info(Assert.assertNotNull(availresponse));
然而,这在信息方面有点有限。我通常做的是:
if(availresponse==null)
{
log.fatal("availresponse was null");
}
Assert.assertNotNull(availresponse);
我知道这有点麻烦,测试两次条件,但它确实允许您调整记录器的输出级别,并添加您认为有用的任何其他信息,例如用于确定可用响应内容的变量
或者,您可以尝试将控制台输出显示在日志文件中,在这种情况下,您需要添加以下内容:
log4j.appender.stdout.Target=System.out
我找到了一种简单、方便且完美的方法,可以将TestNG输出记录到log4j.log文件中。但这不能将最终报告的详细信息记录到log4j中(通过或失败) 然后添加未实现的方法
public void onTestSuccess(ITestResult result) {
logger.info(result);
}
public void onTestFailure(ITestResult result) {
logger.info(result);
}
您可以在需要的方法中添加log4j记录器。享受吧 您可以在项目路径中找到
测试输出
文件夹index.html
将显示成功或失败的测试输出
- 如果
成功,则testMethod()
文件中将不会显示任何输出结果。您可以使用index.html
Reporter.log()
- 如果
失败,它将自动在文件中打印输出。testmethod()
注意:
是一个抛出的错误,用于指示断言失败java.lang.AssertionError
如果有人知道如何将该错误插入到报告中,请在下面进行评论。最终找到了在
log4j
中记录断言错误的最简单方法
在捕获块
中,如果异常
不起作用,则应为可丢弃
try {
Assert.assertTrue(hotel.getAmenitiesList().size() < 0, "Hotel Amenities Available!");
} catch (Throwable e) {
e.printStackTrace();
logger.error("FAILED: testRoomAmenities ", e);
Assert.fail();
试试看{
Assert.assertTrue(hotel.getAmenitiesList().size()<0,“酒店设施可用!”);
}捕获(可丢弃的e){
e、 printStackTrace();
logger.error(“失败:TestRoome”);
Assert.fail();
当此实现不作为失败调用时
。它将显示场景已通过
。因此您应该使用断言.FAIL()
要使其成为失败的
嗨,我想将Assert的输出添加到log4j中。Assert往往是true或false,在这种情况下,分别测试条件的Assert的包装器将告诉您条件是通过了还是失败了。您可以向它们添加消息,例如Assert.assertNotNull(availresponse,“在此处插入消息”);如果条件失败,您将看到消息。如果您正在谈论其他内容,您可以向我展示一些代码和您所引用的控制台的输出吗?如果您引用的是空指针消息,它可能来自JVM,而不是TestNG。是的。这是真的。正如您所提到的,我想添加来自控制台转换为log4j.log文件。我尝试了很多次,但没有找到任何方法。如果我想帮助您,您必须发布log4j属性文件的内容、记录器变量声明以及希望日志文件包含的输出示例。如果上述建议不起作用(例如log.info(Assert()),没有足够的信息来建议其他内容。您好,我想将Assert的输出添加到log4j中。在if构造中相应地添加log.info
或log.error
语句。应该记录它。
try {
Assert.assertTrue(hotel.getAmenitiesList().size() < 0, "Hotel Amenities Available!");
} catch (Throwable e) {
e.printStackTrace();
logger.error("FAILED: testRoomAmenities ", e);
Assert.fail();