4

我已经开发了一个(大部分)工作插件,但由于它的功能与它处理的项目直接相关,你如何为插件开发单元和集成测试。我的最佳想法是为插件创建一个集成测试项目,该项目在其生命周期内使用该插件,并具有报告插件处理数据成功或失败的测试。

有人有更好的想法吗?

4

2 回答 2

6

您需要使用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进行澄清,

于 2008-09-19T20:24:07.547 回答
1

如果你想看一些真实世界的例子,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/

于 2008-09-19T20:58:31.677 回答