4

AWS デバイス ファームにテストを正常にアップロードして実行しました。ローカルでは、 @Test(enabled = false, dependsOnGroups = "Login") などの楽しいものを使用して、その時点で実行するテストと実行順序をマークしています。ローカルでは、これはすべて正常に機能し、期待どおりにうまく機能します。この問題は、maven ビルドの zip をデバイス ファームにアップロードしてテスト実行を実行した後に発生します。

デバイス ファームからのログを見ると、「有効」が true に設定されているか false に設定されているかは気にせず、関係なく実行されます。また、「group=」および「dependsOnGroups」アノテーションも無視します。最初にログインしないと、他のすべてのテストが失敗するため、これは非常に重要です。さらに悪いことに、その後の失敗したテストはスキップされないため、AWS は喜んで追加料金を請求してくれます。

@Test(priority=blah) を使用してみましたが、それも無視しています。尊重しているように見えるのは、@BeforeSuite や @AfterSuite のようなものだけです。

誰でもこれに遭遇したり、なぜこれが起こっているのか考えがありますか?

4

2 に答える 2

3

私は AWS Device Farm で働くエンジニアです。

1) 「有効」注釈フラグ

私たちの TestNG パーサーが注釈の「有効」フラグを無視し、無効になっていても常にテストを含めていることについて、あなたが正しいことを確認しました。一見すると、これは単純な問題であり、簡単に修正できるように見えます。最善のシナリオを想定して、できるだけ早く修正して本番環境で使用できるようにします。

2) 「dependsOnGroups」注釈フィールド

これに対する答えはもう少し複雑です。現在、AWS Device Farm は、dependsOnGroupsまたはdependsOnMethodsアノテーション フィールドをサポートしていません。

これにはいくつかの理由があります。主な理由は、AWS Device Farm が各@Testメソッドを個別に実行し、それぞれが Appium サーバーの新しいインスタンスを使用することです。このアプローチには長所と短所がありますが、ここでは詳しく説明しませんが、技術レベルと機能レベルの両方で利点があることは言うまでもありません。TestNGランナーで個々のメソッドを実行すると、個々のメソッドのコンテキストのみが読み込まれ、.jarファイル内で見つかった指定された依存関係のすべてのテスト/スイート/グループは読み込まれません。また、これらのテスト方法はJava毎回異なるプロセスで実行されるため、TestNGrunner はメモリ内に「状態」を維持しません。これは、以前に (別のプロセスで) テストを既に実行していることを認識していないため、再度実行を試みることを意味します。

3) テストの「グループ」の実行

groups/excludegroups現在、実行またはスキップするテストの特定のコレクションを選択できるように、ユーザーに公開していません。ただし、これは、テスト パッケージ アーカイブにアップロードされたファイルのルートに配置され<groups>たファイルにエントリを構成することで可能になります。この場合、パーサーはそれらのグループ内で定義されたテストのみを「検出」する必要があり、すべての注釈付きメソッドではありません。ただし、この特定のケースは試していないので、YMMV.testng.xml*-tests.jar@Test


それが役立つことを願っています! 追加の質問がある場合、または確認したい特定の実行/テスト パッケージがある場合は、お気軽にお問い合わせいただくか、以前に実行した実行の URL を貼り付けてください。

于 2016-01-08T18:52:24.170 に答える
-2

*-tests.jar のルートに testng.xml を追加して確認しました。

しかし、デバイス ファームは、testng.xml にリストされているテストを実行していません。@Test アノテーションを使用してすべてのクラスを実行しています

于 2016-02-19T11:21:46.720 に答える