隐藏maven“运行com.MyTest”日志行

时间:2016-10-06 20:45:07

标签: maven maven-surefire-plugin

我在mvn输出中得到以下内容:

Running com.MyTest
Tests run: 1 , Failures: 0 , Errors: 0 , Skipped: 0 , Time elapsed: 0.02 sec - in com.MyTest

尽管有旗帜:

-Dsurefire.printSummary=false -Dsurefire.useFile=true

有没有办法隐藏第一行 - Running com.MyTest

更多信息

这应该是无关紧要的,但我也补充说:

-Dlogback.configurationFile=/Users/me/logback.xml

使用包含以下内容的logback.xml:

<configuration>
  <root level="OFF">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

pom.xml surefire配置

<project>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${maven.surefire.plugin}</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven.surefire.plugin}</version>
        <configuration>
          <includes>
            <include>**/*Test.class</include>
          </includes>
          <parallel>classes</parallel>
          <threadCount>10</threadCount>
          <useFile>false</useFile>
        </configuration>
      </plugin>

    </plugins>
  </build>

  <profiles>
    <profile>
      <id>coverage-per-test</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.15</version>
            <configuration>
              <properties>
                <property>
                  <name>listener</name>
                  <value>org.sonar.java.jacoco.JUnitListener</value>
                </property>
              </properties>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>

1 个答案:

答案 0 :(得分:1)

对于不显示此特定行,必须不应创建控制台记录器。 The code is creating this logger当以下方法返回true时:

private boolean shouldReportToConsole()
{
    return isUseFile() ? isPrintSummary() : isRedirectTestOutputToFile() || isBriefOrPlainFormat();
}

在该行的后面,如果返回true,则行ConsoleReporteris created it will writewhen the tests are started的实例。

所以:

因此,使用-Dsurefire.printSummary=false -Dsurefire.useFile=true的配置,它应该可以工作,并且该行不应该在控制台中,也不应该在输出文件中。您的问题是maven-surefire-plugin设置<useFile>false</useFile>的配置。 POM中配置的任何值都会直接取决于您在命令行上设置的内容。这是为了确保当POM定义一个值时,它不能被覆盖并有助于具有可重现的构建。

所以你可以做的是强制reportFormat的值不正确(既不是"brief"也不是"plain"),你会注意到"Running "线不再发射。

虽然这有点笨拙。因此,另一种解决方案是定义Maven属性并在命令行上覆盖该属性。在你的插件中,有:

<useFile>${surefire.plugin.useFile}</useFile>

并定义一个属性,默认为false

<properties>
  <surefire.plugin.useFile>false</surefire.plugin.useFile>
</properties>

这样,构建行为与以前相同。当您定义-Dsurefire.plugin.useFile=true时,您将覆盖Maven属性,这将确保将useFile设置为true的Surefire启动。