Maven插件冲突

时间:2015-07-13 11:35:35

标签: maven maven-plugin cucumber-jvm test-reporting

我想做的就是在阶段集成测试中运行测试,然后生成报告。 通过mvn验证

但只有测试执行报告永远不会运行。当我评论第一个插件然后执行其他插件。知道怎么解决吗?

我的pom下面有

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.4.0</version>
            <executions>
                <execution>
                    <phase>integration-test</phase>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <classpathScope>test</classpathScope>
                        <executableDependency>
                            <groupId>info.cukes</groupId>
                            <artifactId>cucumber-core</artifactId>
                        </executableDependency>
                        <mainClass>cucumber.api.cli.Main</mainClass>
                        <arguments>
                            <argument>target/test-classes/feature</argument>
                            <agrument>--glue</agrument>
                            <argument>integration</argument>
                            <argument>src\test\java</argument>
                            <argument>--plugin</argument>
                            <argument>pretty</argument>
                            <argument>--plugin</argument>
                            <argument>html:target/cucumber-report</argument>
                            <argument>--plugin</argument>
                            <argument>json:target/cucumber-report/cucumber.json</argument>
                            <argument>--tags</argument>
                            <argument>~@ignore</argument>
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>net.masterthought</groupId>
            <artifactId>maven-cucumber-reporting</artifactId>
            <version>0.0.8</version>
            <executions>
                <execution>
                    <phase>verify</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <projectName>poc.selenium.it</projectName>
                        <outputDirectory>target/cucumber-report</outputDirectory>
                        <cucumberOutput>target/cucumber-report/cucumber.json</cucumberOutput>
                        <enableFlashCharts>true</enableFlashCharts>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

1 个答案:

答案 0 :(得分:0)

问题是由于cucumber.api.cli.Main calls System.exit因此在另一个插件执行之前终止了Maven进程。

解决问题的一种方法是使用exec的{​​{1}}目标,而不是exec-maven-plugin目标,因为它在一个单独的进程中运行。

但是,更好(更简单)的解决方案是定义一个JUnit测试,用于配置和运行黄瓜测试,例如:

java

然后,您可以使用package integration; import org.junit.runner.RunWith; import cucumber.api.junit.Cucumber; import cucumber.api.CucumberOptions; @RunWith(Cucumber.class) @CucumberOptions(plugin = "json:target/cucumber-report/cucumber.json") public class RunTest { } maven-surefire-plugin插件执行该测试。然后maven-failsafe-plugin插件将成功执行并创建报告。

您可以在github branch I have just pushed上看到这一点。