我们正在为项目使用logback和TestNG。当我们进行测试时(设置在logback-test.xml
文件中),使用TRACE级别将Logback设置输出到控制台和文件。
现在,有两个问题。首先,在CI服务器(TeamCity)上运行此文件时,我们得到一个700 + MB的BuildLog文件,这很浪费空间(已经有一个日志文件),并使浏览器超载。其次,我们无法将断言错误打印在日志中。由于这些是被TestNG捕获的,因此它们仅显示在TeamCity的UI中,而不显示在文件日志中。
这里应该有什么好的方法?我正在考虑在控制台上以INFO级别进行日志记录(如果在TeamCity下运行),否则在TRACE上运行。我可以使用通过环境变量控制的过滤器来实现。对于第二个问题,我仍然不知道。
蒂娅·尼古拉
为了将AssertionError
s打印在文件日志中,我最终实现了TestNG ITestListener
:
public class ListenerLogger implements ITestListener
{
private static final Logger LOG = LoggerFactory.getLogger(ListenerLogger.class);
@Override
public void onTestStart(ITestResult result)
{
LOG.info("Starting {}.{} with parameters {}", result.getTestClass().getName(), result.getTestName(), result.getParameters());
}
@Override
public void onTestSuccess(ITestResult iTestResult)
{
LOG.info("Test successful");
}
// This belongs to ITestListener and will execute only on the event of fail test
public void onTestFailure(ITestResult result)
{
LOG.error("Test failed!", result.getThrowable());
}
...
}
并将其添加到pom.xml
我在CI下拥有的项目中:
<dependency>
<groupId>my.awesome.project</groupId>
<artifactId>ci-helper</artifactId>
<version>1.0.1</version>
<scope>test</scope>
</dependency>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句