如何将 testng.xml 文件添加到适用于 AWS Device Farm 的 Appium Java TestNG 测试包中的 *-tests.jar 文件的根目录?

上次更新时间:2021 年 12 月 1 日

我想要为我的 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 文件创建测试运行