运行mvn clean install时不要运行集成测试

时间:2013-07-02 11:50:56

标签: maven integration-testing maven-failsafe-plugin

我希望发生以下情况:

  • 当我运行mvn clean install时,我想单独运行单元测试(没有集成测试)
  • 当我mvn integration test时,我想单独进行集成测试(没有单元测试)
  • 当我单独进行mvn test单元测试时,应该运行。

我使用Maven Surefire插件和Maven failsafe插件尝试了一些但不能 实现这一点。我尝试过的是:添加了Surefire和Failsafe插件,尝试将单元测试与注释分开,以及在包级别分离单元和集成测试,并保持单元和集成测试的特定命名约定。

我能够实现的是在mvn clean install上单独运行单元测试,但是当我运行Maven集成测试时,我无法阻止单元测试运行。知道我应该怎么做吗?

1 个答案:

答案 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将只运行单元测试,没有集成测试会导致它在生命周期的早期。