nep*_*tom 5 unit-testing maven
我正在使用 Maven 运行单个测试。
这两种方式运行的区别是:
mvn -Dtest=DatabaseTest test
mvn -Dtest=DatabaseTest surefire:test
Run Code Online (Sandbox Code Playgroud)
我可以看到测试显示:
[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
Run Code Online (Sandbox Code Playgroud)
虽然Surefire:test显示:
[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
Run Code Online (Sandbox Code Playgroud)
这个问题有非常有价值的解释,尽管当前的问题指出了人们可能面临的典型疑问,并且它是一个非常具体的用例。@Shadow 提供的答案澄清了这一点。可以参考 maven-lifecycle-vs-phase-vs-plugin-vs-goal 问题来扩大和更深入地了解 Maven 的工作方式。
区别在于,test运行完整的构建直到执行测试的点,而surefire:test仅执行测试,重用先前构建的中间结果。
因此,如果您编辑一个测试并且仅运行surefire:test,则新版本的测试将不会被编译,因此 Maven 将执行一些旧版本的测试。一般来说,很难说哪个版本的测试会以这种方式执行,所以这就是为什么人们一般使用mvn clean test而不是mvn surefire:test.
| 归档时间: |
|
| 查看次数: |
3052 次 |
| 最近记录: |