如何在Maven surefire中看到test-by-test stdout / stderr

时间:2015-04-10 18:35:00

标签: java maven junit

我在Maven中运行一个基于JUnit的测试套件,总共进行了大约200次测试。许多产生Log4J DEBUG或ERROR行,我看到它们都被整理到我的surefire-reports目录中的一个长文件中。

我希望看到所有这些输出按测试划分,所以我可以发现什么测试产生了什么输出。我怎么能这样做?

1 个答案:

答案 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