为了将 testng.xml 文件应用于 AWS Device Farm 的 Appium TestNG 测试包,我需要将 testng.xml 文件添加到 *-tests.jar 文件的根中。该怎么办?

要演示使用 testng.xml 文件,您可以使用 aws-samples GitHub 页面中的 Device Farm Appium 测试项目,创建 testng.xml 文件,然后使用 Maven 打包测试。然后,从 aws-samples GitHub 页面使用 Android 项目的 Device Farm 示例应用程序,您可以构建一个示例 Android 应用程序以在测试设备上使用。

注意:在 Device Farm 的标准环境中,testng.xml 文件仅支持一部分功能。如果项目需要使用优先级、包含标记、排除标记、复杂分组或使用 testng.xml 文件中的参数,请使用自定义环境

1.    下载或克隆 aws-device-farm-appium-tests-for-sample-app Java 测试示例项目,必要时解压缩项目,然后将活动目录更改为该项目。

cd aws-device-farm-appium-tests-for-sample-app/

2.    创建 /src/test/resources 目录:

mkdir src/test/resources

Super POM 配置为将 resources 目录中的所有文件添加到 *- tests.jar 文件中。

要查看项目的 Super POM,请运行以下命令:

mvn help:effective-pom

或者,您可以在 pom.xml 中实施 testResources 标记,以明确引用 src/test/resources 之外的另一个目录:

<testResources>
     <testResource>
        <directory>${project.basedir}/src/test/resources</directory>
     </testResource>
</testResources>

3.    在 src/test/resources 目录中创建 testng.xml 文件,然后将 AlertPageTest 类添加到该文件中:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Default Suite">
    <test name="test">
        <classes>
            <class name="Tests.AlertPageTest"/> <!--Package.ClassName-->
        </classes>
    </test>
</suite>

4.    修改 pom.xml 来包含 surefire 插件,以便引用 testng.xml 文件以在本地执行:

<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 中执行,则这是可选的。但是,在将测试上载到 Device Farm 之前,最好先在本地运行测试。

5.    删除目标目录的内容,然后使用 clean package Maven 命令打包测试。-DskipTests=true 选项指定构建操作不应运行单元测试。

mvn clean package -DskipTests=true

package 命令使用 *-tests.jar 文件在目标目录中创建 zip-with-dependencies.zip 文件。

6.    使用 xf 命令解压缩 jar 以验证 testng.xml 文件是否在根中:

jar xf nameOfTheProjectFromPom-1.0-SNAPSHOT-tests.jar

此外,unzip 命令也可以提取 jar 的内容:

unzip nameOfTheProjectFromPom-1.0-SNAPSHOT-tests.jar -d sampletestsjarcontents

7.    从 GitHub 上的 aws-samples 克隆示例 android 应用程序 aws-device-farm-sample-app-for-android,然后将它用于 Device Farm 中的测试。

https://github.com/awslabs/aws-device-farm-sample-app-for-android

克隆此项目,或下载它的 zip 版本,然后切换到 /aws-device-farm-sample-app-for-android 目录:

git clone https://github.com/awslabs/aws-device-farm-sample-app-for-android.git
cd aws-device-farm-sample-app-for-android/

8.    将 ANDROID_HOME 变量添加到路径中(如果它尚不存在),然后构建项目。

对于 Windows:

在路径环境变量中设置 ANDROID_HOME 变量。

通过运行带有 assembleDebug 参数的 gradle 命令来构建项目:

gradlew.bat assembleDebug

对于 macOS 或 Linux:

将以下行添加到 /.bash_profile 文件中:

export ANDROID_HOME=/Users/$(whoami)/Library/Android/sdk

使用 source 命令重新加载配置文件:

source ~/.bash_profile

通过执行带有 assembleDebug 参数的 gradle 命令来构建项目:

./gradlew assembleDebug

这将在 ./app/build/outputs/apk 目录中创建一个 app-debug.apk 文件,该文件用于 Device Farm 上的测试。

9.    在 Device Farm 中计划测试,然后验证它是否仅运行类 AlertPageTest.java 中的测试。

所有套件(Setup Suite、Tests.AlertPageTest、Teardown Suite)都应该显示它们已经成功。


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 访问 AWS 支持中心

发布时间:2018 年 9 月 26 日