簡體   English   中英

如果測試不在測試目錄中但在主目錄中並且類名沒有。* Test。*之類的關鍵字,如何在Maven中運行JUnit Test

[英]How to run JUnit Test in maven if the test are not in test dir but in main dir and the classname are not having keywords like .*Test.*

這是背景。

我正在使用螞蟻構建的項目。 當我們用來創建一個新的Class時,我們會在與ant支持的類相同的類中編寫junit測試。ClassName沒有'Test'命名約定。 超過800個Junit測試。

現在,我們需要轉到Maven構建結構。 問題是,maven僅運行類名具有命名約定“ Test”的junit。

如何運行src / main / java / *中的junit測試?

另外,有沒有辦法可以拉出所有帶有“ @Test”注釋的方法?

如果您需要更多信息,請告訴我。

僅僅因為您曾經使用Ant來做過那樣的事情,並不適合現在就繼續使用它。 現在,您已經遷移到Maven,您必須遵循其做事方式並遵守其約定。 其中之一是使您的生產代碼與測試分開。 混合是沒有意義的,因為實際上您是在用無用的(對於代碼的客戶而言)方法亂扔代碼。 盡管您可以繼續這樣做並找到解決方法,但這不是選擇的高標准方法。

下一步真正需要做的是安排一些重構時間並執行以下任務:

  • 創建src/test/java (和分別創建src/test/java src/test/resources )。

  • 為每個包含@Test注釋方法的類創建一個*Test類,並將它們放在src/test/java

  • 將這些方法移至相應的新類。

  • 將所有僅由測試使用的資源移至src/test/resources目錄。

您必須更改運行測試的Surefire插件的配置。 我沒有測試過,但是您可以嘗試以下配置:

<build>
  <testSourceDirectory>src/main/java</testSourceDirectory>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.16</version>
      <configuration>
        <includes>
          <include>**/*.java</include>
        </includes>
      </configuration>
    </plugin>
  </plugins>
</build>

我想既然您正在使用ant,那么您有一個測試套件嗎? 如果是這樣,最簡單的方法是更改​​配置以使用給定的測試套件:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.12.4</version>
  <configuration>
    <includes>
      <include>AllTest.class</include>
    </includes>
  </configuration>
  </plugin>

但是,我不確定它是否也會出現在src文件夾中,因此您可能必須將測試套件移至測試目錄。

至於拉出所有帶有@Test批注的方法(我假設沒有套件?),如果您不遵循肯定測試類的命名約定,則必須自己做。 制作自己的測試運行器實現並不難,它可以在類路徑或子文件夾中搜索所有類,然后找到符合條件的所有類並將其傳遞給Junit來運行。

如果您使用的是eclipse,則仍可以將其作為Junit測試執行。

實際上,如果您的“測試類”沒有放在test文件夾中,則意味着您不打算在maven build操作中將它們作為“測試”運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM