包装后运行测试

时间:2011-05-03 07:00:27

标签: unit-testing maven jar package

我的一个项目需要对生成的JAR文件进行非常复杂的设置,所以我想在package阶段之后运行一个测试,以确保JAR包含它应该包含的内容。

我如何使用Maven 2?

2 个答案:

答案 0 :(得分:5)

您可以使用surefire-plugin。你需要做的是将阶段与执行相关联(见下文)。在包装阶段之后,您需要将阶段更改为您想要的阶段。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
            <executions>
                <execution>
                    <id>unittests</id>
                    <phase>test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <skip>false</skip>
                        <includes>
                            <include>**/**/**/*Test.java</include>
                        </includes>
                    </configuration>
                </execution>
            </executions>
        </plugin>

答案 1 :(得分:3)

将您的项目转换为multi-module build。在第一个模块中,构建原始项目。在第二个模块中,向第一个模块添加依赖项。

这会将第一个JAR添加到类路径中。


OP更新:这有效,但我必须将其添加到我的POM中:

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${version.maven-surefire-plugin}</version>
            <configuration>
                <useSystemClassLoader>false</useSystemClassLoader>
            </configuration>
        </plugin>

重要的部分是<useSystemClassLoader>false</useSystemClassLoader>。如果没有这个,我的类路径只包含几个VM JAR和surefire引导程序JAR(它包含MANIFEST.MF中的测试类路径)。我不知道为什么从它加载的类中看不到这个测试类路径。