我需要将输出结果(FAIL或SUCCESS)输入log4j输出。
Assert.assertTrue(availresponse);
有没有办法将TestNG控制台输出添加到log4j.log文件中?
答案 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;
}