我已經開發了一個(大部分)工作插件,但由於它的功能與它所處理的項目直接相關,因此如何開發插件的單元測試和集成測試。我有最好的想法是爲插件創建一個集成測試項目,該插件在其生命週期中使用插件,並進行測試,報告插件在處理數據時是成功還是失敗。如何使用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/