有什麼辦法可以提供某些命令行參數以跳過所有測試,但跳過某個模塊?所以我不需要在每次需要運行另一個測試時更改pom.xml?maven ::在多模塊項目中只運行單一測試
例如,我想在TeamCity上創建構建配置,並提供命令行參數以在某些模塊中只運行單個測試。下次我需要更改它並運行另一個測試,依此類推。
也許這不是CI如何使用,但仍然如此。
有什麼辦法可以提供某些命令行參數以跳過所有測試,但跳過某個模塊?所以我不需要在每次需要運行另一個測試時更改pom.xml?maven ::在多模塊項目中只運行單一測試
例如,我想在TeamCity上創建構建配置,並提供命令行參數以在某些模塊中只運行單個測試。下次我需要更改它並運行另一個測試,依此類推。
也許這不是CI如何使用,但仍然如此。
我假設您已閱讀關於running a single test under surefire的文檔?他們不告訴你是如何做到這一點的子模塊:
mvn test -Dtest=testname -pl subproject
哪裏subproject
是包含測試項目。從MVN手冊頁:
-pl, - 項目精氨酸指定反應堆項目的逗號分隔的列表來構建所有項目來代替。項目可以由[groupId]:artifactId或其相對路徑指定。
的情況下,該模塊是睾丸依賴於其他項目,解決方案可以通過改變命令爲:
mvn test -DfailIfNoTests=false -Dtest=testname -pl subproject
參考:http://www.automatethebox.com/2015/12/some-helpful-commands-to-build-multi.html
其他答案我看到的是沒有完全完成,爲項目這取決於要構建的其他子模塊。一種選擇是運行mvn install
以將所需的罐子安裝到~/.m2/...
中,但該選項不是很「乾淨」。
以下命令將構建子模塊,並僅運行指定的測試類。這將在父模塊級別運行。另外,不需要指定子模塊名稱。
mvn test -DfailIfNoTests=false -Dtest={test_class_name} -am
順便說一句,這也可以mvn clean test -Dfa.....
。運行測試時始終運行clean
是我個人的習慣。
References ..
-am
將使所有其他子模塊。
-DfailIfNoTests=false
不會使整個過程失敗,因爲我們不打算在其他模塊中運行測試。
-pl
選項不需要,因爲-am
已經構建了所有東西
謝謝!這個爲我工作! – 2018-02-07 07:15:11
您是否看到該主題? http://stackoverflow.com/questions/1873995/run-a-single-test-method-with-maven和這裏更多:http://maven.apache.org/plugins/maven-surefire-plugin/examples/ single-test.html除了這些我找不到。 – 2012-08-08 17:20:30
@ MaunoV。實際上如果有幾個模塊,測試將會失敗。我發現的解決方案:-Dtest = TestName -DfailIfNoTests = false – jdevelop 2012-08-08 18:30:05