2008-09-19 76 views
4

我已经开发了一个(大部分)工作插件,但由于它的功能与它所处理的项目直接相关,因此如何开发插件的单元测试和集成测试。我有最好的想法是为插件创建一个集成测试项目,该插件在其生命周期中使用插件,并进行测试,报告插件在处理数据时是成功还是失败。如何使用JUnit创建Maven插件的自动化测试?

任何人有更好的想法?

回答

6

您需要使用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

相关问题