Mysql 哪个maven阶段总是在测试阶段之后执行?
我已经实现了一个Maven插件,用于在MavenMysql 哪个maven阶段总是在测试阶段之后执行?,mysql,maven,maven-plugin,Mysql,Maven,Maven Plugin,我已经实现了一个Maven插件,用于在Maventest阶段之前创建测试数据库(使用随机名称),并在test阶段完成时删除该数据库 插件需要执行两次,在test阶段之前(用于创建数据库时)和test阶段之后(用于删除该测试数据库时) 测试阶段之后始终执行哪个Maven生命周期阶段,无论测试阶段是否成功执行?测试中没有对应于测试前和测试后的特定阶段。这是因为单元测试不需要外部环境。听起来您想要做的不是单元测试,而是集成测试,因为它们需要设置一个环境 从: test-使用合适的单元测试框架测试编译
test
阶段之前创建测试数据库(使用随机名称),并在test
阶段完成时删除该数据库
插件需要执行两次,在test
阶段之前(用于创建数据库时)和test
阶段之后(用于删除该测试数据库时)
测试阶段之后始终执行哪个Maven生命周期阶段,无论
测试阶段是否成功执行?测试中没有对应于测试前和测试后的特定阶段。这是因为单元测试不需要外部环境。听起来您想要做的不是单元测试,而是集成测试,因为它们需要设置一个环境
从:
test
-使用合适的单元测试框架测试编译的源代码。这些测试不应要求打包或部署代码
集成测试
-必要时将包处理并部署到可以运行集成测试的环境中
还有一个集成前测试
、集成测试
和集成后测试
,用于设置、运行和销毁测试环境
预集成测试
:在执行集成测试之前执行所需的操作。这可能涉及设置所需环境等事项
集成测试
:如有必要,处理包并将其部署到可以运行集成测试的环境中
集成后测试
:执行集成测试后执行所需的操作。这可能包括清理环境
因此,在集成测试
阶段使用
现在,如果您真的想将其作为单元测试运行,我不会将数据库的创建/删除作为Maven插件编写。在测试环境中配置测试数据库时,让应用程序创建该数据库会更好。(例如,如果您使用的是Spring,那么它有很多功能。)
而且,如果您真的想在test
阶段将其作为单元测试运行,并使用插件,则必须跳过maven-surefire插件的默认执行,然后定义maven插件创建数据库的执行,新执行maven-surefire插件
,执行maven插件删除数据库,绑定到测试
阶段
这是因为Maven在插件绑定到同一阶段时按顺序调用插件
配置如下所示:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>default-test</id>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId><!-- group id of your plugin --></groupId>
<artifactId><!-- artifact id of your plugin --></artifactId>
<version><!-- version --></version>
<executions>
<execution>
<id>create-db</id>
<phase>test</phase>
<goals>
<goal><!-- your goal --></goal>
</goals>
<!-- add configuration -->
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId><!-- group id of your plugin --></groupId>
<artifactId><!-- artifact id of your plugin --></artifactId>
<version><!-- version --></version>
<executions>
<execution>
<id>drop-db</id>
<phase>test</phase>
<goals>
<goal><!-- your goal --></goal>
</goals>
<!-- add configuration -->
</execution>
</executions>
</plugin>
maven surefire插件
2.19.1
默认测试
真的
创建数据库
测试
maven surefire插件
2.19.1
测试
测试
测试
下降分贝
测试
尽管将默认测试绑定到空阶段在Maven中有效,但IntelliJ将其标记为错误,在我的例子中,IntelliJ随后无法解析Maven导入的任何依赖项。用这种方式禁用默认测试阶段:defaulttesttrue@robyes!事实上,这样更干净,谢谢你的评论!