我希望发生以下情况:
mvn clean install
时,我想单独运行单元测试(没有集成测试)mvn integration test
时,我想单独进行集成测试(没有单元测试)mvn test
单元测试时,应该运行。我使用Maven Surefire
插件和Maven failsafe
插件尝试了一些但不能
实现这一点。我尝试过的是:添加了Surefire和Failsafe插件,尝试将单元测试与注释分开,以及在包级别分离单元和集成测试,并保持单元和集成测试的特定命名约定。
我能够实现的是在mvn clean install
上单独运行单元测试,但是当我运行Maven集成测试时,我无法阻止单元测试运行。知道我应该怎么做吗?
答案 0 :(得分:1)
您遇到的问题是您不理解具有以下阶段的Maven life-cycle(仅摘录):
clean
...
compile
...
test
..
pre-integration-test
integration-test
post-integration-test
..
install
这意味着换言之,默认情况(约定)不能满足您在不运行集成测试的情况下执行mvn clean install
的要求。
我建议创建一个配置文件,在其中放入maven-failsafe-plugin,以便控制是否运行集成测试。这导致了这样的事情:
mvn -Prun-its install
要运行集成测试,您可以使用以下内容:
mvn verify
将包括运行单元测试,但可以使用以下方法来抑制:
mvn -DskipTests=true verify
使用mvn test
将只运行单元测试,没有集成测试会导致它在生命周期的早期。