2016-04-15 93 views
1

我有,當我運行它們在Eclipse中JUnit測試之間的差異,當他們被行家運行萬無一失pluging做從終端爲什麼mvn clean install和eclipse在運行的junit測試中有所不同?

mvn clean install一個項目,當我用鼠標右鍵單擊在Eclipse src/test/java,Junit的告訴我有137個測試運行。做mvn clean install只給了我119.在這一個,似乎在測試名稱的情況下可能是一個可能的解釋一些測試不以小寫字母開頭,這使得他們無視它們,但有沒有其他可能的解釋?

在第二個項目中,我有一個更令人討厭的問題:整個測試包沒有運行mvn clean install。我有src/test/java下的2個包:com.projectcom.project.servicescom.project下的測試課程通過surefire正確運行,而不是com.project.services下的測試課程。

我能看到的唯一特異性com.project.services下類有繼承的幾個層次:

public class ActualTestsCasesA extends GenericTestSituationA {} 

public class GenericTestSituationA extends ServicesAbstractTests {} 

public abstract ServicesAbstractTests extends ProjectAbstractTests {} 

ActualTestsCasesAGenericTestSituationAServicesAbstractTests都在com.project.services測試包。 ProjectAbstractTests保持在另一個Maven項目中。

這裏是我的pom.wml的依賴,以萬無一失的插件:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.18.1</version> 
      <configuration> 
       <forkMode>always</forkMode> 
       <encoding>${project.build.sourceEncoding}</encoding> 
       <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding> 
      </configuration> 

     </plugin> 
+0

'mvn help:effective-pom'在每個環境中運行時會返回不同的結果嗎? –

+0

在pom.xml中查看eclipse有效的pom選項卡,surefire-plugin部分在兩側都是相同的。 –

+1

檢查單元測試的名稱。你是否遵循像'* Test.java *'這樣的單元測試的命名約定? – khmarbaise

回答

1

正如你已經發現,運行測試時神火具有特定的命名約定。但是,您可以配置其他naminig約定來匹配您自己的項目的測試文件名。這對於未遵守Maven標準的遺留測試或者您不想重構的大套測試​​類都是有用的。

退房有關詳細信息,神火文檔:http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

在你的情況,你可以配置一定能成功的,包括像這樣具有附加的模式測試類:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.18.1</version> 
      <configuration> 
       <forkMode>always</forkMode> 
       <encoding>${project.build.sourceEncoding}</encoding> 
       <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding> 
      <includes> 
        <include>**/*Tests*.*</include> 
        <include>**/*TestSituation*.*</include> 
      </includes> 
      </configuration> 

     </plugin> 

Eclipse的,但是,是不是綁定受到這樣的限制。相反,它依賴於junit4庫的存在來運行測試,並允許jUnit本身來確定一個類是否被認爲是可運行測試。請參閱Eclipse Mars docs瞭解更多信息。

相關問題