我想使用包含在依赖项 jar 中的 TestNG 套件文件来执行集成测试。
The 设置 pom.xml 的详细信息将在此处讨论 https://stackoverflow.com/questions/10496846/run-junit-tests-contained-in-dependency-jar-using-maven-surefire
这是我目前拥有的 pom 文件。问题出在我需要定义套件文件的部分:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test-runner</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>${test.library.groupId}</groupId>
<artifactId>${test.library.artifactId}</artifactId>
<version>${test.library.version}</version>
</dependency>
<dependency>
<groupId>${test.library.groupId}</groupId>
<artifactId>${test.library.artifactId}</artifactId>
<version>${test.library.version}</version>
<classifier>tests</classifier>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>${test.suite}.xml</suiteXmlFile> <!-- <<< this is the issue -->
</suiteXmlFiles>
<dependenciesToScan>
<dependency>${test.library.groupId}:${test.library.artifactId}</dependency>
</dependenciesToScan>
</configuration>
</plugin>
</plugins>
</build>
</project>
可以通过在 Jenkins 作业中提供参数值来执行测试:
-Dtest.library.groupId=com.example.test
-Dtest.library.artifactId=example
-Dtest.library.version=2.0.1
-Dtest.suite=smoke
如果套件文件在本地可用,那么这一切都可以正常工作,但我想让它与仅在 jar 中可用的套件文件一起工作(与测试类相同)。无需拆包。
所以问题是:如何定义套件文件(打包在依赖项中)的位置?
这是有问题的部分:
<suiteXmlFile>[whatComesHere?]${test.suite}.xml</suiteXmlFile>
如何将failsafe/surefire指向测试jar中包含的套件文件?或者这是不可能的,我必须解压 jar 只是为了能够运行特定的套件文件?