我想要为我的 AWS Device Farm 项目配置 Appium Java TestNG 测试。但是,我需要先在我的 Appium 测试包中将 testng.xml 文件添加到 *-tests.jar 文件的根目录中。该如何操作?
简短描述
对 Apache Maven pom.xml 文件进行配置,以将您的 testng.xml 文件打包到您的 Appium 测试包的 *-tests.jar 文件的根目录中。
**注意:**在 Device Farm 的标准测试环境中,仅支持 testng.xml 文件的一部分功能。如果您的项目需要以下任何 testng.xml 文件功能,请使用自定义测试环境:
- 优先级
- **“include”和“exclude”**标签
- 复杂的分组
- testng.xml 文件中定义的任何 TestNG 参数
解决方法
1. 在您的 Apache Maven pom.xml 文件中,验证 testResources 标签中包含以下目录:src/test/resources。如果没有看到该目录,请将以下目录配置添加到文件中:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
**注意:**您可以为此过程指定另一个目录。如果选择使用另一个目录,请确保在步骤 2 和 3 中使用同一目录。
2. 将您的 testng.xml 文件添加到 pom.xml 文件的 src/test/resources 目录中。
3. (可选)要在本地运行测试,请将以下 Maven Surefire 插件添加到您的 pom.xml 文件的 <plugins> 列表中。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<suiteXmlFiles> <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile></suiteXmlFiles>
</configuration>
</plugin>
**注意:**最佳实践是在将项目上载到 Device Farm 之前在本地运行测试。Maven Surefire 插件在本地测试期间使您的 pom.xml 文件能够引用 testng.xml 文件。
4. 通过运行以下 Maven 命令,清理 pom.xml 文件的目标 目录并重新打包测试文件:
$ mvn clean package -DskipTests=true
**注意:**DskipTests=True 值指定构建不会运行单元测试。
该命令在您的 pom.xml 文件的目标目录中创建 zip-with-dependencies.zip 文件。这个压缩文件是您的 Appium 测试包,它在 *-tests.jar 文件的根目录中包含您的 testng.xml 文件。
5. 通过运行以下命令之一验证 testng.xml 文件是否位于 Appium 测试包的 *-tests.jar 文件的根目录中:
要查看您的 *-tests.jar 文件中的文件快照,请运行以下 jar 命令:
$ jar tvf foo-1.0.0-SNAPSHOT-tests.jar
-或者-
要将 *-tests.jar 文件中的所有文件提取到文件夹中,请运行以下解压缩命令:
$ unzip foo-1.0.0-SNAPSHOT-tests.jar -d sampletestsjarcontents
现在,您可以将测试包上载到 Device Farm 中,然后使用应用程序和 zip-with-dependencies.zip 文件创建测试运行。
相关信息
在 AWS Device Farm 中对 Appium Java TestNG Web 应用程序进行故障排除
使用 AWS Device Farm 中的自定义测试环境