Java TestNG控制台输出到log4j.log

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。您

我需要将输出结果(失败或成功)输入到log4j输出中

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();