私のインターンシップでは、WebアプリケーションのテストにTestNGとSeleniumを使用する必要があります。しかし、私は問題があります。時にはセレンやブラウザが何らかのランダムな理由で動作していないため、動作テストに「失敗」と表示されます。それを避けるために、私は@Test(invocationCount = 4, successPercentage = 25)
という注釈を使用することができます。テストが成功すると "成功"とマークされますが、問題はこのソリューションがテスト時間を4倍にするという問題です。これはあまり効率的ではありません。testngとseleniumsテストを最適化する方法
テスト時間を短縮するには、「テストが失敗した場合はこのテストを再実行します(テストが失敗した場合のみ)」というルールを書き、2番目、3番目、またはこのテストを「成功」とマークしてください。これらのバグを避けることができます。しかし、私はこのルールを書く方法を見つけられませんでした。私はリスナーを追加できることを知ったので、 "onTestFailure
"というメソッドがあります。テストが失敗したときに何かできますが、テストを実行します。
また、失敗したテストがすべて保存されているtestng-failed.xmlもあります。このxmlファイルを実行してこれらのテストを再実行することができますが、前回の実行からレポートが消去されます。失敗したテストは、2回目の実行が成功すると「成功」とマークされます。 (私はJenkinsにtestNG/seleniumを統合しているので、すべてのテストのグラフがあるので、この方法はあまり適応していませんが、この方法ではテスト時間が4倍にならず、これが私の望むものです)
それを行う方法の手がかりがあるなら、それはとても良いでしょう。
私はtestng-failed.xmlを3回実行することをテストしています。その後、すべてのテストが機能しており、時間がかかりません。しかしJenkinsでは、testng-failed.xmlが最後に実行されたときにtestng-result.xmlを編集するので、グラフは「1回のテスト実行、1回の成功」を示します。 3回目のテストに失敗したこのテスト。 この方法では、すべての失敗したテストを含むグラフが生成されますが、3回目に実行されたテストを除くすべての動作テストは表示されません。 – user1000499