4 Stimmen

Wie erstellt man automatisierte Tests für ein Maven-Plugin mit JUnit?

Ich habe ein (größtenteils) funktionierendes Plugin entwickelt, aber da seine Funktion direkt mit dem Projekt zusammenhängt, das es verarbeitet, wie entwickelt man Unit- und Integrationstests für das Plugin. Die beste Idee, die ich hatte, ist, ein Integrationstestprojekt für das Plugin zu erstellen, das das Plugin während seines Lebenszyklus verwendet und Tests enthält, die über den Erfolg oder Misserfolg des Plugins bei der Verarbeitung der Daten berichten.

Hat jemand eine bessere Idee?

6voto

Brian Matthews Punkte 8225

Sie müssen die 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>

Sie leiten Ihre Unit-Test-Klassen ab von AbstractMojoTestCase .

Sie müssen ein einfaches POM erstellen, normalerweise in der src/test/resources Ordner.

    <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>

Verwenden Sie AbstractMojoTest.lookupMojo(String,File) (oder eine der anderen Varianten), um das Mojo für ein bestimmtes Ziel zu laden und auszuführen.

    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

Ich habe ein eigenes Plugin erstellt, auf das Sie sich zur Klärung beziehen können http://ldap-plugin.btmatthews.com ,

1voto

Alex Miller Punkte 67243

Wenn Sie einige Beispiele aus der Praxis sehen möchten, bietet das Terracotta Maven Plugin (tc-maven-plugin) einige Tests, die Sie in der Open Source Forge einsehen können.

Das Plugin befindet sich unter: http://forge.terracotta.org/releases/projects/tc-maven-plugin/

Und die Quelle ist in svn unter: http://svn.terracotta.org/svn/forge/projects/tc-maven-plugin/trunk/

Und in diesem Quelltext finden Sie einige aktuelle Maven Plugin-Tests unter: src/test/java/org/terracotta/maven/plugins/tc/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X