AWS Device Farm 用 Appium TestNG テストパッケージに testng.xml を適用するために、*-tests.jar ファイルのルートに testng.xml を追加しなければなりません。どうすればよいですか?

testng.xml の使い方をデモするために、aws-samples GitHub ページから Device Farm Appium テストプロジェクトを使用して、testng.xml ファイルを作成し、Maven を使ってテストをパッケージ化できます。それから、aws-samples GitHub ページから Android プロジェクト用 Device Farm サンプルアプリを使い、テストデバイスで使用する Android アプリケーションをビルドできます。

注: Device Farm の標準環境では、testng.xml ファイルの一部の特徴にだけ対応します。プライオリティ、include タグ、exclude タグ、複雑なグルーピング、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 はリソースディレクトリ内の全ファイルを *-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.     testng.xml ファイルを src/test/resources ディレクトリに作成し、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 を修正して、次のローカル実行用の testng.xml ファイルを参照する surefire プラグインをインクルードします。

<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.    ターゲットディレクトリのコンテンツを削除し、Maven コマンドの cleanpackage を使って、テストをパッケージ化します。-DskipTests=true オプションは、ビルドでユニットテストを実行しないよう指定します。

mvn clean package -DskipTests=true

パッケージコマンドは、ターゲットディレクトリに *-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.    android のサンプルアプリケーション aws-device-farm-sample-app-for-android を GitHub の aws-samples からクローンし、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 変数をパス環境変数に設定します。

gradle コマンドを assembleDebug パラメーター付きで実行し、プロジェクトをビルドします。

gradlew.bat assembleDebug

macOS または Linux では以下を行います。

次の行を /.bash_profile ファイルに追加します。

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

source コマンドを使って、プロファイルをリロードします。

source ~/.bash_profile

gradle コマンドを assembleDebug パラメーター付きで実行し、プロジェクトをビルドします。

./gradlew assembleDebug

これで ./app/build/outputs/apk ディレクトリに Device Farm のテストで使用される app-debug.apk ファイルが作成されます。

9.    Device Farm でのテストをスケジュールし、クラス AlertPageTest.java でのテストのみを実行したことを確認します。

スイートはすべて (設定スイート、Tests.AlertPageTest、ティアダウンスイート) は成功したことを表示するはずです


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2018 年 09 月 26 日