Maven:使用外部库进行集成测试

时间:2011-11-27 14:47:32

标签: java testing maven integration-testing

目前,我建立了一个集成测试套件。基础是一个Maven项目,它包含几个模块,这些模块在包装所有内容之前相互依赖,以设置数据库,将一些数据放入其中并对其进行测试。另外,我有一些带有一些实用程序和测试数据的模块。

第一步(上面未提到)是压缩图像的副本,其中包含许多构成要测试的软件套件的JAR文件。不幸的是,该软件不是由Maven构建的,而是由Ant构建的,因此我无法在Artifactory或类似的东西中找到这些东西。

我现在的问题是,我使用集成测试方法复制并解压缩图像,但我不知道如何将JAR文件添加到Maven类路径中。所有其他模块都需要编译并运行从ZIP文件中提取的jar。

如何将JAR添加到Maven类路径以供以后编译和测试运行? ZIP内容的目标始终是同一目录。不幸的是,JAR的名称包含更改的版本信息(构建号)。因此,系统和标签的简单使用并不容易。像$ {package.path} / lib / * / .jar这样的路径条目会很棒。可能有插件吗?

或者有没有人有更好的想法来设置针对prebuild JAR的集成测试?

1 个答案:

答案 0 :(得分:1)

从所有依赖项中创建一个jar,${package.path}/lib/*/.jar中的所有内容。

您可以在运行maven之前或作为maven构建的一部分使用ant任务来创建此jar。

要合并您的jar,您可以使用Ant Jar Task(请参阅合并档案部分)。从那里:

<jar destfile="build/main/checksites.jar">
    <fileset dir="build/main/classes"/>
    <restrict>
     <name name="**/*.class"/>
     <archives>
       <zips>
         <fileset dir="lib/main" includes="**/*.jar"/>
       </zips>
     </archives>
    </restrict>
</jar>

这会创建一个jar文件,它嵌入lib / main中所有jar的所有类。

然后您可以使用指向此jar的系统范围在maven中正常。注意:如果你在maven中创建jar(通过ant),那么你应该在target中创建jar,以便正确清理它。

要使用maven中的ant构建文件,您可以使用maven antrun plugin,类似于:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>

    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <property name="local.project.artifact.name" value="${project.build.finalName}" />
                    <property name="local.distribution.artifact.name" value="${local.project.artifact.name}-distribution" />
                    <property name="local.distribution.artifact.file" value="${project.build.directory}/${local.distribution.artifact.name}.zip" />
                    <ant antfile="build-deploy.xml" />
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

这会在程序包阶段运行ant构建文件build-deploy.xml。系统所需的修改留给读者练习: - )。