我已经开发了一个(大部分)工作插件,但由于它的功能与它所处理的项目直接相关,因此如何开发插件的单元测试和集成测试。我有最好的想法是为插件创建一个集成测试项目,该插件在其生命周期中使用插件,并进行测试,报告插件在处理数据时是成功还是失败。如何使用JUnit创建Maven插件的自动化测试?
任何人有更好的想法?
我已经开发了一个(大部分)工作插件,但由于它的功能与它所处理的项目直接相关,因此如何开发插件的单元测试和集成测试。我有最好的想法是为插件创建一个集成测试项目,该插件在其生命周期中使用插件,并进行测试,报告插件在处理数据时是成功还是失败。如何使用JUnit创建Maven插件的自动化测试?
任何人有更好的想法?
您需要使用maven-plugin-testing-harness,
<dependency> <groupId>org.apache.maven.shared</groupId> <artifactId>maven-plugin-testing-harness</artifactId> <version>1.1</version> <scope>test</scope> </dependency>
您从AbstractMojoTestCase派生单元测试类。
您需要创建一个裸露的骨头POM,通常位于src/test/resources
文件夹中。
<project> <build> <plugins> <plugin> <groupId>com.mydomain,mytools</groupId> <artifactId>mytool-maven-plugin</artifactId> <configuration> <!-- Insert configuration settings here --> </configuration> <executions> <execution> <goals> <goal>mygoal</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
使用AbstractMojoTest.lookupMojo(字符串,文件)(或者其它变型中的一个)来加载魔特定目标并执行它。
final File testPom = new File(PlexusTestCase.getBasedir(), "/target/test-classes/mytools-plugin-config.xml"); Mojo mojo = this.lookupMojo("mygoal", testPom); // Insert assertions to validate that your plugin was initialised correctly mojo.execute(); // Insert assertions to validate that your plugin behaved as expected
我创建了一个我自己的插件,你可以参考澄清http://ldap-plugin.btmatthews.com,
如果你想看到一些真实世界的例子,秦始皇Maven插件(TC-maven-插件)有一些测试,你可以在开放源码伪造中细读。
插件是:http://forge.terracotta.org/releases/projects/tc-maven-plugin/
和源在SVN在:http://svn.terracotta.org/svn/forge/projects/tc-maven-plugin/trunk/
而且在源您可以找到一些实际的Maven插件测试:SRC /测试/ JAVA /组织/兵马俑/ maven/plugins/tc/