1

私がしていること:Jenkinsを使用して、開発/ステージング/本番などのさまざまな環境に対して同じテストスイートとテストケースを実行しています。Java 実装と TestNG で WebDriver を使用しています。

私がやりたいこと:環境に応じて、テストスイート全体ではなく、一部のテストを選択的に無効にします。環境間で別々のコードベースを維持するのではなく、これを達成する方法を知りたいです。

最初の考え: Jenkins で各環境の各ジョブのシステム プロパティを設定すると、各テスト デコレータがこの情報を引き出して実行するかどうかを判断する必要があると考えていました。不格好だと思います。どうすればよいかわかりません。また、これが正しいアプローチかどうかもわかりません。

誰かがこれを達成するための最良の方法を教えてもらえますか? これが最善の方法ではないことを願っています。

ありがとう、

ジョー

4

3 に答える 3

1

TestNG リスナーを見たことがありますか?

berfore テスト スイートが実行される直前に、実行するテストが識別子になった後にリスナーを記述して、テストのリストを反復処理し、実行したくないテストを削除することができます。これはプログラムによるものであるため、任意の Java を記述して目的を達成できます。

また、注釈を作成して、どのテストがどの環境で実行されるかを識別することもできます。@RunInEnvironment({"UAT", INT"}); のようなものでこれらのテストに注釈を付けるなど、リスナーはこれらの注釈を使用して、不要なテストをリストから削除できます。

于 2013-08-24T07:26:36.237 に答える
0

@MrTiこのソリューションはかなり静的であり、彼はより動的なものを望んでいると思います。

起動時に環境を検出できる場合は、そのスレッドに記載されている解決策のいずれかを試すことができる場合があります。このフレームワークも役立つかもしれません: https://github.com/wolfs/testng-rules

注: JUnit では、ルールhttps://github.com/lacostej/web-validators/commit/2e1af8e1d9d1bf206849702d4231961563457815を使用します(実装は古い API を使用します)

于 2013-08-24T06:41:55.327 に答える