2016-10-06 55 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