0

我們的自動化QA測試用例由Jenkins安排和執行。我要運行測試用例在不同環境下說UATSTAGEPROD(因爲他們有不同的測試數據),這些測試案例「分組」作爲SANITY迴歸BATS 。 我使用maven + testNG(surefire插件)來構建並執行它。從jenkins傳遞java參數 - > maven - > testng

現在我需要在詹金斯作爲'BATS在舞臺'中運行這個作業或者說'迴歸在DEV'等。 爲此,我認爲最好的方法是,在詹金斯的工作confis中,調用類似..

mvn test -Denv=STAGE -Dgroup=SANITY 

其他選項是設置在詹金斯的系統變量PARAMS(env和組),並從那裏走。

但我面臨的一些主要模塊在不同的崗位在這裏提出..

How to pass java code a parameter from maven for testing

這看起來像一個共同的要求,有沒有人解決了這個?我的方法是否正確,是否有更好的方法?

請建議。

回答

1

您可以爲每個測試場景/環境創建單獨的maven構建配置文件,然後根據Jenkins中設置的命令行參數或環境變量設置它們的激活。

編輯:

你會基本上是對每個測試場景配置文件,然後你可以使用萬無一失,插件包含/排除配置來控制測試發射。理想情況下,你可以通過頂級測試類來運行所有這些,因此每個你調用它們的「組」都會有一些AllTests.java類來觸發底層測試套件。

<profile> 
    <id>Stage</id> 
    <activation> 
     <activeByDefault>false</activeByDefault> 
    </activation> 
     <plugins> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12.4</version> 
      <configuration> 
       <includes> 
      <include>**/Sanity/AllTests.java</include> 
       </includes> 
      </configuration> 
      </plugin> 
     </plugins> 
    </profile> 
+0

感謝您的回覆,這是不是過度殺戮,有沒有簡單的方法,你可以建議請。這看起來像一個共同的要求。 – Girish

+0

我不認爲這是矯枉過正。你必須有一種方法來告訴插件哪些測試運行/排除,以及如何通過配置元素來做到這一點。因此,在maven中,如果您想要在使用相同POM的不同場景中執行不同行爲,可以創建不同的配置文件 – gregwhitaker

+0

恩......讓我試試看,謝謝。 – Girish

0

假設您使用Build部分來運行「mvn test」,這裏是對我有用的。我去了OP提到的同一個帖子,但是發現了這個更簡單的方法。

(詹金斯配置頁作業)

Build 
Invoke Maven 3 
    Maven Version [<latest version>] 
    Root POM  [pom.xml] 
    Goals and options [test -Denv=STAGE -Dgroup=SANITY] 

您也可以參數化的建立和使用參數如下的選項。

Goals and options [test -Denv=$PARAM_ENV -Dgroup=$PARAM_GROUP]