我在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>
答案 0 :(得分:1)
对于不显示此特定行,必须不应创建控制台记录器。 The code is creating this logger当以下方法返回true
时:
private boolean shouldReportToConsole() { return isUseFile() ? isPrintSummary() : isRedirectTestOutputToFile() || isBriefOrPlainFormat(); }
在该行的后面,如果返回true
,则行ConsoleReporter
的is created it will write和when the tests are started的实例。
所以:
useFile=true
(默认值)和printSummary=false
或useFile=false
和redirectTestOutputToFile=false
(默认设置)和reportFormat
设置为非"brief"
或"plain"
的值(默认情况下,它是"brief"
)。因此,使用-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启动。