2012-05-11 51 views
2

我期待通過使用類像這樣運行在Maven和他們組集成的一些測試:使用Maven配有安全插件來運行測試分類

接口:

package com.path.for.testing; 

public interface SlowTests { 

} 

測試類:

import com.path.for.testing.SlowTests 

@Category(SlowTests.class) 
public class SlowTest { 
    ... 
} 

POM文件:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    ... 
    <profiles> 
    ... 
    <profile> 
     <id>functional-test-slow-tests</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <build> 
     <plugins> 
     <plugin> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <executions> 
      <execution> 
       <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
       </goals> 
       <configuration> 
       <groups>com.path.for.testing.SlowTests</groups> 
       </configuration> 
      </execution> 
      </executions> 
     </plugin> 
     </plugins> 
     </build> 
    </profile> 
    </profiles> 
</project> 

我運行它:mvn乾淨安裝-P功能測試慢測試

我的問題是,當它運行它似乎循環所有測試,而不僅僅是指定的。分類不適用於集成測試嗎?或者我做錯了什麼?我會按照要求更新信息。對這個問題的任何幫助或方向都非常感謝,我是新手,很可能我錯過了一些顯而易見的事情。謝謝。


編輯迴應User944849:

當與-X參數運行,我認爲故障安全插件獲取執行多次。我還添加了您建議的新執行ID。這是我所得到的,當項目建成:

[DEBUG] ----------------------------------------------------------------------- 
[DEBUG] Goal:   org.apache.maven.plugins:maven-failsafe-plugin:2.12:integration-test (default-integration-tests) 
[DEBUG] Style:   Regular 
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> 

... 

[DEBUG] ----------------------------------------------------------------------- 
[DEBUG] Goal:   org.apache.maven.plugins:maven-failsafe-plugin:2.12:verify (default-integration-tests) 
[DEBUG] Style:   Regular 
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> 

測試使用的是您提出的新的ID,但我還是我得到相同的結果,即不需要測試仍在運行。

+0

您是否檢查過配置JUnit 4.7+?或者你使用TestNG? – khmarbaise

回答

2

如果您使用-X運行,您是否看到故障安全插件的多次執行?顯示的配置不包含<id>,因此Maven可能會將您配置的執行添加到其默認值。默認運行任何與模式**/IT*.java,**/*IT.java,**/*ITCase.java相匹配的測試。

如果這是發生了什麼,添加<id>來執行這樣的:

<execution> 
    <id>default-integration-tests</id> 
    .... 

將重新定義Maven的默認插件執行爲一體的測試階段,做你想做的。


更新

@Brad,感謝測試我的理論,@khmarbaise感謝給我的另一個想法。

2個目標處決是你應該擁有的。我沒有看到你的配置有什麼問題,所以我檢查了打開JIRA的故障安全插件,發現可能導致使用錯誤的JUnit提供程序的possibly related issue。如果這是您正在運行的內容,您可能必須手動指定插件配置中的JUnit47提供程序,如定義here

+0

感謝您的幫助,我已經更新了我對此的迴應。請看一下。 – Brad

+0

嘿,我週末出去了,沒有得到回覆的機會,但是非常感謝你,你的更新發現了這個問題。實際上我已經測試過了,看看我使用的是哪個版本的JUnit,但顯然如果你沒有明確地指定版本號或並行屬性,它會回滾到支持組並且組被跳過。再次感謝,我真的把我的頭髮拉過來。 – Brad

相關問題