如何使用Maven远程运行集成测试

时间:2018-11-01 10:46:35

标签: maven maven-3 maven-surefire-plugin

我有多模块项目。每个模块都有优点和集成测试。

我能够使用以下插件将模块(包含包含所有依赖项的lib文件夹,配置文件夹,包含测试类及其支持文件的测试文件夹)部署到服务器中。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>${maven.antrun.plugin}</version>
<dependencies>
    <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant-jsch</artifactId>
        <version>1.9.9</version>
    </dependency>
</dependencies>
<executions>
    <execution>
        <id>integration-test</id>
        <phase>install</phase>
        <configuration>
            <target name="integrationTest">
                <macrodef name="integrationTest">
                    <attribute name="adapter"/>
                    <sequential>
                        <!--@formatter:off-->
                         <tar tarfile="${basedir}/target/test-integration-src.tar.gz" compression="gzip" longfile="gnu">
                            <tarfileset dir="${basedir}/target/test-integration-src" mode="750" prefix="test-integration-src">
                                <include name="**/*"/>
                                <exclude name="**/*.java"/>
                            </tarfileset>
                         </tar>
                        <echo message="Installing ${basedir}/target/@{adapter}-${project.version}.tar.gz in test server ${test.server.host} ."/>
                        <scp todir="${test.server.user}@${test.server.host}:${test.server.installDir}"
                             sftp="true"
                             failonerror="false"
                             trust="true"
                             verbose="true"
                             filemode="750"
                             password="${test.server.password}">
                            <fileset dir="${basedir}/target">
                                <include name="@{adapter}-${project.version}.tar.gz"/>
                            </fileset>
                        </scp>
                        <sshexec trust="yes" host="${test.server.host}"
                                 username="${test.server.user}"
                                 password="${test.server.password}"
                                command="tar -zxvf ${test.server.installDir}/@{adapter}-${project.version}.tar.gz -C ${test.server.installDir} &amp;&amp; rm  ${test.server.installDir}/@{adapter}-${project.version}.tar.gz"/>
                        <scp todir="${test.server.user}@${test.server.host}:${test.server.installDir}/@{adapter}-${project.version}"
                             sftp="true"
                             failonerror="false"
                             verbose="true"
                             filemode="750"
                             password="${test.server.password}">
                            <fileset dir="${basedir}/target">
                                <include name="test-integration-src.tar.gz"/>
                            </fileset>
                        </scp>
                        <sshexec trust="yes" host="${test.server.host}"
                                 username="${test.server.user}"
                                 password="${test.server.password}"
                                command="${test.server.installDir}/integrationtest_runner.sh @{adapter}-${project.version}"/>
                        <!--@formatter:on-->
                    </sequential>
                </macrodef>
            </target>
        </configuration>
        <goals>
            <goal>run</goal>
        </goals>
    </execution>
</executions>

然后使用Integrationtest_runner.sh脚本运行测试。它包含以下maven命令

mvn surefire:test -Denv=test -f pom.xml

surefire插件的用法。

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <configuration>
                    <reuseForks>false</reuseForks>
                    <argLine>-javaagent:${basedir}/lib/spring-agent-${version.spring}.jar
                    </argLine>
                </configuration>
            </plugin>

如果maven存储库具有所有依赖项,它将成功运行。

现在我的问题是:

1)如何使用模块而不是maven存储库中的本地依赖项(存在于module \ lib中)。

2)如何等待jenkins构建,直到服务器返回测试结果。

3)无法根据条件构建jenkins。

尝试以下选项,但问题1没有运气:

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <configuration>
                    <reuseForks>false</reuseForks>
                    <argLine>-javaagent:${basedir}/lib/spring-agent-${version.spring}.jar
                    </argLine>
        <additionalClasspathElements>
                          <additionalClasspathElement>${basedir}/lib/*.jar</additionalClasspathElement>
                    </additionalClasspathElements>
        <useManifestOnlyJar>false</useManifestOnlyJar>  
        <useSystemClassLoader>false</useSystemClassLoader>
                </configuration>
            </plugin>

0 个答案:

没有答案