簡體   English   中英

如何按特定順序運行Maven測試?

[英]How to run maven tests in particular sequence?

我創建了Maven項目,其結構如下:

src/main/java
src/main/resources
src/test/java
src/test/resources

我將TestNG測試保存在src/test/java文件夾中。 假設在此文件夾中,我有三個類:

  1. YahooTest
  2. GoogleTest
  3. TwitterTest

並且每個都有幾種TestNG測試方法。

當我在命令提示符下單擊mvn clean test時,觀察到測試按以下順序運行:

  1. 來自GoogleTest的測試
  2. 從TwitterTest測試
  3. 來自YahooTest的測試
  4. 來自GoogleTest的測試
  5. 從TwitterTest測試
  6. 來自YahooTest的測試
  7. 來自GoogleTest的測試
  8. 從TwitterTest測試
  9. 來自YahooTest的測試

意味着第一類按字母順序排序,即GoogleTest,TwitterTest,YahooTest,然后執行每個類的一個測試,然后再次執行每個類的一個測試。 這一直持續到所有測試方法執行完成為止。

但是我想自定義測試執行。

我如何實現以下目標:

  1. 按我想要的順序而不是字母順序安排測試類的測試執行
  2. 而不是從每個測試類執行一個測試方法,然后從每個測試類執行一個測試方法...,而是執行同一類的所有測試用例,然后移至另一個測試類

也考慮這個鏈接

在TestNG中,您使用dependsOnMethods和/或dependsOnGroups:

@Test(groups = "a")
public void f1() {}

@Test(groups = "a")
public void f2() {}

@Test(dependsOnGroups = "a")
public void g() {}

在這種情況下,g()僅在f1()和f2()完成並成功后才運行。

考慮這個鏈接 您可以使用以下代碼指定runOrder

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
    <runOrder>alphabetical</runOrder>
</configuration>

在你的pom.xml中

按字母順序排列的是testng的訂購方式。 一種方法是使用suite.xml,從中您可以根據需要自定義運行。

下面將按字母順序運行所有類,但一個接一個

  <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite1" verbose="1" >

  <test name="Check" preserve-order="true"> //This is true by default
      <packages>
          <package name="testngtests.mytests"></package>
      </packages>

  </test>

</suite>

如果要按特定順序執行類,則可以使用classes標記,而不要指定packages標記,並按您希望它們運行的​​順序放置類名稱。

<suite name="TmpSuite" >
  <test name="TmpTest" >
    <classes>
      <class name="YahooTest"  />
      <class name="GoogleTest"  />
    <classes>
    </test>
</suite>

您需要在surefire插件配置部分中指定此xml-請在此處參考using suitexml文件部分

暫無
暫無

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

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