2016-10-06 29 views
1

我得到了我的MVN输出如下:隐藏行家“运行com.MyTest”日志行

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

更多信息

它应该是无关的,但我也补充一点:用含logback.xml

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

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

的pom.xml万无一失配置

<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

我不认为你的logback confg甚至被使用,看看这个答案http://stackoverflow.com/a/12276898/1743880 – Tunaki

+0

是的,我知道。我只是把它包括在内,这样我就不会收到回复,告诉我配置日志级别。 –

+1

使用此配置'-Dsurefire.printSummary = false -Dsurefire.useFile = true',您不应该在控制台或输出文件中都有该行。经过了Surefire 2.19.1版的测试。你正在使用哪个版本的Surefire插件? – Tunaki

回答

1

对于此特定行不显示,有必要不应创建控制台日志记录器。 The code is creating this logger当下列方法返回true

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

再往下行,如果它返回true,该行when the tests are startedConsoleReporteris createdit will write一个实例。

因此,要么:

这样,你的-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属性,这将确保Surefire引导useFile设置为true

+0

感谢您花时间解释潜在因素。那么我应该为'reportFormat'故意使用一个无效值吗?我很高兴这么做,我只是希望未来版本的maven不会禁止我这样做。 –

+0

@ Sridhar-Sarnobat是的,这就是为什么我认为最好不要那样做,并且去重写一个新的Maven属性解决方案。它更简单并记录下来。 – Tunaki