我已经开发了一个(大部分)工作插件,但由于它的功能与它处理的项目直接相关,你如何为插件开发单元和集成测试。我的最佳想法是为插件创建一个集成测试项目,该项目在其生命周期内使用该插件,并具有报告插件处理数据成功或失败的测试。
有人有更好的想法吗?
我已经开发了一个(大部分)工作插件,但由于它的功能与它处理的项目直接相关,你如何为插件开发单元和集成测试。我的最佳想法是为插件创建一个集成测试项目,该项目在其生命周期内使用该插件,并具有报告插件处理数据成功或失败的测试。
有人有更好的想法吗?
您需要使用maven-plugin-testing-harness,
<依赖> <groupId>org.apache.maven.shared</groupId> <artifactId>maven-plugin-testing-harness</artifactId> <版本>1.1</版本> <scope>测试</scope> </依赖>
您从AbstractMojoTestCase派生单元测试类。
您需要创建一个简单的 POM,通常在src/test/resources
文件夹中。
<项目> <构建> <插件> <插件> <groupId>com.mydomain,mytools</groupId> <artifactId>mytool-maven-plugin</artifactId> <配置> <!-- 在此处插入配置设置 --> </配置> <执行> <执行> <目标> <目标>我的目标</目标> </目标> </执行> </执行> </插件> </插件> </build> </项目>
使用 AbstractMojoTest.lookupMojo(String,File) (或其他变体之一)为特定目标加载 Mojo 并执行它。
最终文件 testPom = new File(PlexusTestCase.getBasedir(), "/target/test-classes/mytools-plugin-config.xml"); Mojo mojo = this.lookupMojo("mygoal", testPom); // 插入断言以验证您的插件是否已正确初始化 mojo.execute(); // 插入断言以验证您的插件是否按预期运行
我创建了我自己的插件,您可以参考http://ldap-plugin.btmatthews.com进行澄清,
如果你想看一些真实世界的例子,Terracotta Maven 插件 (tc-maven-plugin) 有一些测试,你可以在开源 forge 中仔细阅读。
该插件位于: http: //forge.terracotta.org/releases/projects/tc-maven-plugin/
源代码在 svn 中:http ://svn.terracotta.org/svn/forge/projects/tc-maven-plugin/trunk/
在该源代码中,您可以在以下位置找到一些实际的 Maven 插件测试:src/test/java/org/terracotta/maven/plugins/tc/