2

我希望发生以下情况:

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

Maven Surefire我用插件和插件尝试了一些东西,Maven failsafe但无法做到这一点。我尝试过的是:添加了 Surefire 和 Failsafe 插件,尝试使用注释分离单元测试,以及在包级别分离单元测试和集成测试,并保持单元和集成测试的特定命名约定。

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

4

1 回答 1

2

您遇到的问题是您不了解具有以下阶段的Maven 生命周期(仅摘录):

   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

Usingmvn test将只运行单元测试,没有集成测试,因为它处于生命周期的早期。

于 2013-07-02T16:33:09.490 回答