boj*_*ans 3 mysql maven-plugin maven
我已经实现了一个 Maven 插件,用于在 Maventest阶段之前创建测试数据库(具有随机名称),并在test阶段完成后删除该数据库。
该插件需要执行两次,在test阶段之前(何时用于创建数据库)和之后test阶段(何时用于删除该测试数据库)。
哪个Maven生命周期阶段将始终在测试阶段之后执行,阶段是否test成功执行?
Maven 生命周期中没有对应于测试前和测试后的特定阶段。这是因为单元测试不应该需要外部环境。听起来您想做的不是单元测试而是集成测试,因为它们需要设置环境。
从文档:
test- 使用合适的单元测试框架测试编译的源代码。这些测试不应该要求打包或部署代码integration-test- 如有必要,处理包并将其部署到可以运行集成测试的环境中
而且还有一个pre-integration-test,integration-test而且post-integration-test是用来设置,运行和销毁测试环境。
pre-integration-test:在执行集成测试之前执行所需的操作。这可能涉及诸如设置所需环境之类的事情。integration-test:如有必要,处理包并将其部署到可以运行集成测试的环境中。post-integration-test:执行集成测试后执行所需的操作。这可能包括清理环境。
因此,integration-test使用maven-failsafe-plugin.
现在,如果您真的想将其作为单元测试运行,我不会将数据库的创建/删除编写为 Maven 插件。在测试环境中配置它时,让您的应用程序创建测试数据库会好得多。(例如,如果您使用的是 Spring,它有很多功能。)
而且,如果你真的想在test阶段中将它作为单元测试运行,并使用你的插件,你将不得不跳过 的默认执行,maven-surefire-plugin然后定义创建数据库的 Maven 插件的执行,maven-surefire-plugin和的新执行执行 Maven 插件删除绑定到test阶段的数据库。
这是有效的,因为当插件绑定到同一阶段时,Maven按照它们在 POM 中定义的顺序调用插件。
配置如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3529 次 |
| 最近记录: |