2014-01-05 70 views
0

我想Maven只有在定義參數時才運行測試階段。 例如:Maven:在運行測試之前檢查參數

mvn test -Dserver=hosname 

如果沒有指定的服務器(或空) - 我不想試運行(而不是在MVN測試,也沒有在MVN安裝)。

我該怎麼做?我如何在代碼中獲取參數的值(例如「server」)?

+1

使用配置文件這是由設置'skipTests = true'的上述變量激活的?但這聽起來更像是一個集成測試,而不是單元測試。 – khmarbaise

+0

這是集成測試。你能否提供一個使用配置文件的例子? – Jonathan

回答

1

檔案可以做,在行家ü想要什麼

爲前:

<profiles> 
     <profile> 
      <id>server</id> 
      <activation> 
      <property> 
       <name>server</name> 
       <value>${hosname}</value> 
      </property> 
      </activation> 
      <build> 
      <plugins> 
       <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.4.2</version> 
       <configuration> 
        <skipTests>true</skipTests> 
       </configuration> 
       </plugin> 
      </plugins> 
      </build> 
     </profile> 
</profiles> 
+0

@Jonathan,是否適合你 – Tenacious

+0

@Jonathan,你應用了我發佈的解決方案 – Tenacious

+0

是的,但沒有奏效。我運行「mvn install -Dserver = localhost」和「mvn install」,並在兩種情況下運行測試。 – Jonathan

2

假設你正在使用JUnit:

  • 如果一個測試:使用Assume檢查的屬性(見下文@BeforeClass),並跳過測試的屬性爲null
  • 如果許多,創建一個父類並讓你的測試擴展它:

public class RunIfServerProperty { 
    @BeforeClass 
    public static void oneTimeSetup() { 
     Assume.assumeNotNull(System.getProperty("server")); 
    } 
} 

也看到Assume javadoc

0

輪廓可以這樣使用:

<profiles> 
    <profile> 
    <activation> 
     <property> 
     <name>server</name> 
     </property> 
    </activation> 
    <!-- do whatever you need to do --> 
    </profile> 
</profiles> 
相關問題