TestNG控制台输出到log4j.log

时间:2017-11-06 11:06:01

标签: java automation log4j testng

我需要将输出结果(FAIL或SUCCESS)输入log4j输出。

Assert.assertTrue(availresponse);

有没有办法将TestNG控制台输出添加到log4j.log文件中?

5 个答案:

答案 0 :(得分:1)

我找到了一种将TestNG输出记录到log4j.log文件中的简单,简单和完美的方法。但这不能将最终报告详细信息记录到log4j(PASS或FAIL)。

implements ITestListener

然后添加未实现的方法

public void onTestSuccess(ITestResult result) {
    logger.info(result);
}

public void onTestFailure(ITestResult result) {
    logger.info(result);
}

您可以在所需的方法中添加log4j logger。请享用!

答案 1 :(得分:0)

如果需要,可以使用if .. else构造进行日志记录。

if(null != availresponse) {
   //log success message
} else {
   //log failure message
}

另一种方法是编写实现TestListenerAdapter的自定义类。您可以看到完整的示例代码here

答案 2 :(得分:0)

用记录器包裹断言,例如

log.info(Assert.assertNotNull(availresponse));

然而,这在信息方面有点受限。我通常做的是:

    if(availresponse==null)
{
log.fatal("availresponse was null");
}

Assert.assertNotNull(availresponse);

我知道这有点麻烦,对条件进行两次测试,但它确实允许您调整记录器的输出级别并添加您认为有用的任何其他信息,例如:用于确定有效应答内容的变量。

或者,您可以尝试让控制台输出显示在日志文件中,在这种情况下,您需要添加以下内容:

log4j.appender.stdout.Target=System.out

到你的log4j属性文件。

答案 3 :(得分:0)

您可以在项目路径中找到test-output文件夹。 index.html将显示成功或失败的测试输出。

  • 如果testMethod()为成功,则index.html文件中不会显示任何输出结果。您可以使用Reporter.log()

  • 添加成功消息
  • 如果testmethod()失败,则会自动将输出打印在文件中。

    注意java.lang.AssertionError是一个错误,抛出此错误表示断言已失败。


如果有人知道 TestNG 如何将错误插入报告,请在下方发表评论。

答案 4 :(得分:0)

终于找到了在Assert error中记录log4j的最简单方法
catch block Throwable,如果Exception不起作用,则应为try { Assert.assertTrue(hotel.getAmenitiesList().size() < 0, "Hotel Amenities Available!"); } catch (Throwable e) { e.printStackTrace(); logger.error("FAILED: testRoomAmenities ", e); Assert.fail();

FAIL

当这个工具不能作为PASSED调用时。它将显示该方案为Assert.fail()。因此,您应该使用FAILED来制作#include <iostream> #include <string> class TestAbs { public: TestAbs (void) { } virtual ~TestAbs (void) noexcept { } }; class Test : public TestAbs { public: Test (void) : TestAbs () { } ~Test (void) noexcept override { } void* operator new (size_t) throw () { std::cout << "Overloaded operator new!\n"; return nullptr; } void operator delete (void*) noexcept { std::cout << "Overloaded operator delete in class: Test!\n"; } }; int main() { TestAbs* tp = new Test (); delete tp; return 0; }