我在Maven中运行一个基于JUnit的测试套件,总共进行了大约200次测试。许多产生Log4J DEBUG或ERROR行,我看到它们都被整理到我的surefire-reports目录中的一个长文件中。
我希望看到所有这些输出按测试划分,所以我可以发现什么测试产生了什么输出。我怎么能这样做?
答案 0 :(得分:2)
最直接的解决方案是在每次测试的开始和结束时调用以下方法:
static void printBeginning(PrintStream stream) {
String methodName = Thread.currentThread().getStackTrace()[0].getMethodName();
stream.format("---- Beginning Test: %s ----%n", methodName);
}
但是,如果您想使用surefire,那么执行此操作的方法是编写自己的自定义RunListener:
基本上,在Maven中分配RunListener,如this documentation
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>com.mycompany.MyResultListener,com.mycompany.MyResultListener2</value>
</property>
</configuration>
</plugin>
[...]
</plugins>
然后代码将由Surefire运行。
您可以在此处详细了解如何执行此操作:Using JUnit RunListener with Maven