2016-11-08 75 views
2

當使用例如mvn test -Tn運行Maven構建並行化n -fold,我怎麼能讓Maven在其日誌輸出前加上並行測試運行器的標識符?目前日誌輸出看起來像:如何在Maven測試運行輸出中獲得並行執行標識符

[INFO] ------------------------------------------------------- 
[INFO] T E S T S 
[INFO] ------------------------------------------------------- 
[INFO] T E S T S 
[INFO] ------------------------------------------------------- 
[INFO] ------------------------------------------------------- 

這使得它非常難以分辨哪個實例記錄了哪些

我想它表現出一定的並行執行的(線程,進程,等等)的標識符日誌,如:

[1][INFO] ------------------------------------------------------- 
[1][INFO] T E S T S 
[2][INFO] ------------------------------------------------------- 
[2][INFO] T E S T S 
[2][INFO] ------------------------------------------------------- 
[1][INFO] ------------------------------------------------------- 

這是很容易通過增加-Dorg.slf4j.simpleLogger.showThreadName=trueMAVEN_OPTS envionment變量(如https://maven.apache.org/maven-logging.html描述),以獲得在日誌輸出線程標識符,但是這似乎並沒有影響萬無一失的輸出,例如:

[BuilderThread 1] [INFO] Surefire report directory: C:\redacted\path\to\module2\target\surefire-reports 
[BuilderThread 0] [INFO] Nothing to compile - all classes are up to date 
[BuilderThread 0] [INFO] 
[BuilderThread 0] [INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ module1 --- 
[BuilderThread 0] [INFO] Surefire report directory: C:\redacted\path\to\module1\target\surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

回答

0

首先使用-T ...你不併行運行的集成測試運行並行模塊的建設。

此外,如果你使用的是maven-surefire插件,你做錯了什麼,因爲maven-surefire-plugin用於運行單元測試,而maven-failsafe-plugin用於集成測試。

要並行化測試本身,你應該檢查docs如何做到這一點。

除此之外,您應該使用mvn ... verfiy以確保pre-integration-test,integration-testpost-integration-test階段已經運行。如果您致電mvn .. integration-testpost-integration-test將不會被執行。

此外,通過定義集成測試不能parallized原因他們通常使用的資源,被耦合在其他ways..only單元測試可以通過定義原因被parallized它們是獨立的等

+0

嗯,真,-T確實在更高層次上將事物並行化。我會用這些術語來重述這個問題。 其他筆記似乎是準確的,除了'mvn integration-test'肯定會運行'pre-integration-test'階段。我希望它不會運行「後整合測試」,但這與實際問題沒有關係。 至於集成測試是否可以並行化,那肯定取決於它們是如何寫入的。我希望不可並行化的集成測試被註釋掉。 –