mvnverify和mvntest有什么区别
我对mvn verify阶段有点困惑,我创建了一个 spring 引导项目(简单项目,没有添加明确的配置)。我创建了一些 JUnit 单元测试,它们同时使用mvn verify和mvn test命令运行。
在mvn verify和mvn test命令输出中没有观察到差异。
有人可以解释什么mvn verify与mvn test. 还有一些关于 SO 的帖子提到mvn verify运行集成测试。如果是这种情况,那么我有几个问题。
- maven 如何将特定测试识别为单元测试或集成测试?
- 如果
mvn verify假设只运行集成测试,那么为什么要使用它执行单元测试?
回答
首先,当您运行 Maven 目标时,它将运行任何先前的目标。基本阶段的顺序是:
- 证实
- 编译
- 测试
- 包裹
- 核实
- 安装
- 部署
如果运行 Test,maven 将执行验证、编译和测试。基于此,第一点是验证包括测试。
基于官方文档:
-
TEST - 使用合适的单元测试框架测试编译后的源代码。这些测试不应该要求打包或部署代码
-
VERIFY - 对集成测试的结果进行任何检查,以确保满足质量标准
要运行单元测试,推荐使用surefire插件。以及集成测试的故障保护。
在执行验证之前,验证命令按顺序执行每个默认生命周期阶段(验证、编译、打包等)。在大多数情况下,效果与包装相同。但是,如果有集成测试,它们也会被执行。并且在验证阶段可以进行一些额外的检查,例如,如果您的代码是根据预定义的 checkstyle 规则编写的。
结论:如果您想运行集成测试并检查它,请使用验证。如果您只想运行单元测试,请使用 test。
我的个人建议:如果有疑问,请使用验证。