提问者:小点点

“mvn验证”与“mvn测试”有什么区别?


我对mvn验证阶段有点困惑。我创建了一个Spring Boot项目(一个简单的项目,没有添加任何显式配置)。我创建了一些JUnit单元测试,这些测试使用mvn验证mvn test命令运行。

mvn验证mvn test命令输出中没有观察到任何差异。

mvn验证mvn测试有什么不同?

Stack Overflow上的一些帖子还提到mvn验证运行集成测试。如果是这种情况,那么我有几个问题。

  • Maven如何将特定测试识别为单元测试或联调?
  • 如果mvn验证应该只运行集成测试,那么为什么要使用它执行单元测试?

共2个答案

匿名用户

首先,当您运行Maven目标时,它将运行之前的任何目标。基本阶段的顺序是:

  • 验证
  • 编译
  • 测试
  • 验证
  • 安装
  • 部署

如果你运行Test,Maven会执行验证、编译和测试。基于此,第一点是验证包括测试。

根据官方留档:

>

  • TEST-使用合适的单元测试框架测试编译后的源代码。这些测试不应该要求代码被打包或部署

    验证-对集成测试的结果进行任何检查,以确保满足质量标准

    要运行单元测试,建议使用Surefire插件。和集成测试的故障安全。

    验证命令在执行验证之前按顺序执行每个默认生命周期阶段(验证、编译、打包等)。在大多数情况下,效果与包相同。但是,如果有集成测试,这些也将被执行。并且在验证阶段可以进行一些额外的检查,例如,如果您的代码是根据预定义的检查样式规则编写的。

    结论:如果您想运行集成测试并对其进行检查,请使用验证。如果您只想运行单元测试,请使用测试。

    我个人的建议:如果有疑问,请使用验证。

  • 匿名用户

    Maven如何将特定测试识别为单元测试或联调?

    集成测试总是使用IT.java或IT.java或*ITCase.java