Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven mvn验证和mvn测试之间有什么区别_Maven_Maven Lifecycle - Fatal编程技术网

Maven mvn验证和mvn测试之间有什么区别

Maven mvn验证和mvn测试之间有什么区别,maven,maven-lifecycle,Maven,Maven Lifecycle,我对mvn验证阶段有点困惑,我创建了一个spring启动项目(简单的项目,没有添加明确的配置)。我创建了一些JUnit单元测试,它们使用mvn verify和mvn test命令运行 在mvn验证和mvn测试命令输出中没有观察到任何差异 有人能解释一下mvn-verify与mvn-test有什么不同吗。还有一些关于SO的帖子提到,mvn verify运行集成测试。如果是这样,那么我有几个问题 maven如何将特定测试识别为单元测试或集成测试 如果假设mvn verify只运行集成测试,那么为什

我对mvn验证阶段有点困惑,我创建了一个spring启动项目(简单的项目,没有添加明确的配置)。我创建了一些JUnit单元测试,它们使用
mvn verify
mvn test
命令运行

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

有人能解释一下
mvn-verify
mvn-test
有什么不同吗。还有一些关于SO的帖子提到,
mvn verify
运行集成测试。如果是这样,那么我有几个问题

  • maven如何将特定测试识别为单元测试或集成测试
  • 如果假设
    mvn verify
    只运行集成测试,那么为什么要用它执行单元测试

首先,当你运行一个maven目标时,它将运行之前的任何目标。基本阶段的顺序为:

  • 证实
  • 编撰
  • 试验
  • 包装
  • 核实
  • 安装
  • 部署
若您运行测试,maven将执行验证、编译和测试。基于此,第一点是验证包括测试

基于:

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

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

要运行单元测试,建议使用surefire插件。以及集成测试的故障保护

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

结论:如果要运行集成测试并进行检查,请使用verify。如果您只想运行单元测试,请使用test


我的个人建议:如果有疑问,请使用verify.

来确保质量标准-此标准在哪里配置?这取决于您的配置和您使用的插件。通常,使用故障保护插件为集成测试配置规则。仅集成测试将使用verify(仅使用mvn测试单元)执行,然后,您可以配置(例如)在一个测试失败时中断执行,或者您可以配置为即使有测试失败也不中断地完成所有构建。有很多maven插件,您可以将具体操作附加到任何阶段。“规则”标记在所有pom配置上。从执行命令,甚至从docker容器开始……这种配置在您的CI环境中非常重要。继续同一示例,如果在IT测试失败时构建中断,则合并请求将标记该执行失败。如果不是,人们会看到它“绿色”。我不是一个反对者,但我想人们会认为这是关于Maven生命周期的基本知识。@JFabianMeier我同意,但文档对我来说非常混乱,除了执行比
测试
更多的阶段之外,还无法区分
验证
的不同之处。另外,
检查集成测试的结果以确保质量标准
不是很清楚,检查什么?为什么只有集成测试?在哪里配置了质量标准?在这里您可以看到JAR的不同阶段中发生了什么:当然,可以将其他目标绑定到阶段。