簡體   English   中英

mvn test vs mvn surefire:test

[英]mvn test vs mvn surefire:test

我正在用Maven運行一個測試。

以這兩種方式運行它的區別是什么:

mvn -Dtest=DatabaseTest test

mvn -Dtest=DatabaseTest surefire:test

我可以看到測試顯示:

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ rac.mybatis ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ rac.mybatis ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ rac.mybatis ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/etomort/smip/oracle-rac/mybatis-rac/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ rac.mybatis ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ rac.mybatis ---
[INFO] Surefire report directory: /home/etomort/smip/oracle-rac/mybatis-rac/target/surefire-reports

surefire:測試顯示:

[INFO] --- maven-surefire-plugin:2.12.4:test (default-cli) @ rac.mybatis ---
[INFO] Surefire report directory: /home/etomort/smip/oracle-rac/mybatis-rac/target/surefire-reports

這個問題有非常有價值的解釋,盡管現在的問題指出了人們可能面臨的典型疑問,這是一個非常具體的用例。 @Shadow提供的答案澄清了這一點。 可以參考maven-lifecycle-vs-phase-vs-plugin-vs-goal問題來拓寬和深入理解Maven的工作方式。

不同之處在於test運行完整構建到執行測試的點,而surefire:test僅執行測試,重新使用先前構建的中間結果。

因此,如果您編輯測試並且只運行surefire:test ,則不會編譯新版本的測試,因此Maven將執行一些舊版本的測試。 一般來說,很難說以這種方式執行哪個版本的測試,所以這就是人們通常使用mvn clean test而不是mvn surefire:test

test是一個生命周期階段,由於Maven是基於約定的,這意味着默認情況下某些插件已經綁定到每個階段。

您也可以將自己添加到階段,但您也可以手動調用插件的目標mvn plugin:goal

Surefire是官方測試插件,必將進入測試階段。

暫無
暫無

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

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