AWS Device Farm プロジェクトに Appium Java TestNG テストを設定したいと考えています。ただし、最初に Appium テストパッケージの *-tests.jar ファイルのルートに testng.xml ファイルを追加する必要があります。どうすればよいですか?
簡単な説明
testng.xml ファイルを Appium テストパッケージの *-tests.jar ファイルのルートにパッケージ化するように Apache Maven pom.xml ファイルを設定します。
注: 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 ファイルの target ディレクトリをクリーンアップし、テストファイルを再パッケージ化します。
$ mvn clean package -DskipTests=true
注: DskipTests=True の値は、ビルドがユニットテストを実行しないことを指定します。
このコマンドは、pom.xml ファイルの target ディレクトリに zip-with-dependencies.zip ファイルを作成します。この 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 コマンドを実行します。
$ unzip foo-1.0.0-SNAPSHOT-tests.jar -d sampletestsjarcontents
これで、テストパッケージを Device Farm にアップロードし、アプリケーションと zip-with-dependencies.zip ファイルを使用してテスト実行を作成できます。
関連情報
Troubleshooting Appium Java TestNG web applications in AWS Device Farm
Working with custom test environments in AWS Device Farm