dc9*_*c95 2 integration-testing maven-plugin maven maven-failsafe-plugin maven-invoker-plugin
两者的文档(Failsafe,Invoker)表明它们对于运行集成测试很有用.我无法弄清楚哪一个用于集成测试.
我能看到的唯一区别是Failsafe插件专门用于运行集成测试,而Invoker插件恰好对运行集成测试很有用,但其主要目的是其他方面.但是,当我在Eclipse中创建maven-plugin时,Maven Invoker插件已经包含在POM文件中,并带有以下代码.
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<version>1.7</version>
<configuration>
<debug>true</debug>
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
<pomIncludes>
<pomInclude>*/pom.xml</pomInclude>
</pomIncludes>
<postBuildHookScript>verify</postBuildHookScript>
<localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
<settingsFile>src/it/settings.xml</settingsFile>
<goals>
<goal>clean</goal>
<goal>test-compile</goal>
</goals>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>install</goal>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)
它们之间的主要区别是什么?是否存在特定情况,其中一个应优先于其他集成测试?
用例确实不同.您可以将其maven-invoker-plugin视为Failsafe插件的特定子集,旨在用于测试您的自定义Maven插件,尽管它的用法可以更广泛.
它maven-failsafe-plugin与maven-surefire-plugin(实际上它们都在surefire项目下)并驾齐驱:它用于在Java代码中编写测试.Surefire和Failsafe插件之间的区别在于第一个用于编写单元测试,而另一个用于编写集成测试.
与单元测试相反,集成测试是需要存在环境的测试.环境是一个很大的术语,但它包含了测试运行所需的所有其他工具.例如,如果要根据Web服务器或数据库的存在来运行应用程序的测试,则通常是集成测试.
Maven default通过具有特定阶段在生命周期中集成此定义,以便设置测试所需的环境,运行测试并破坏环境:
Maven生命周期有四个阶段用于运行集成测试:
pre-integration-test用于设置集成测试环境.integration-test用于运行集成测试.post-integration-test用于拆除集成测试环境.verify用于检查集成测试的结果.
一个例子是设置和启动Web服务器pre-integration-test,测试HTTP调用integration-test并最终停止Web服务器post-integration-test.
请注意,在这种情况下,集成测试是用Java编写的,并且位于内部src/test/java.有一个命名约定,以区别于单元测试.所以,你正在编写测试代码.
你是对的,它的主要用例不是用于运行集成测试.它的设计是为了在构建期间调用其他Maven项目.当您想要针对其他Maven项目运行测试时,该特定用例非常有用.
这个插件特别方便执行其他Maven插件的集成测试.Invoker插件可用于运行一组测试项目,这些测试项目旨在断言被测插件的某些功能.
假设您正在开发一个Maven插件,并且您想测试它的行为是否正确.您可以使用Surefire插件编写测试来执行其功能的基本测试,即不需要整体运行插件的功能.
您甚至可以使用Failsafe插件编写集成测试,这将是针对Maven测试项目执行插件的完整运行并检查其输出的测试.但这很快就会变得很麻烦:使用自定义Maven插件在磁盘上创建Maven项目会更容易,让Invoker插件调用这个项目.然后,您可以测试运行是否正常.
总的来说,要测试你的Maven插件,你甚至不需要编写任何Java代码:你可以在目录中使用你的插件创建测试Maven项目,让Invoker插件调用它,并使用一个来验证事情是否正确用BeanShell或Groovy编写的post build脚本.那些是集成测试,因为它们需要一个环境来运行(主要是Maven本身),但你并没有真正编写它们.
这可能是Eclipse为您生成的原因:您创建了一个包装的Maven项目maven-plugin,因此它会引导您使用Invoker插件进行测试.
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |