...私はTestNGのでは達成できないですが、多分私が間違って必要なものを今かなり確信しています。これらの〜(dbResetTestなど)をテストクラスとして認識するのではなく、代わりにテストメソッドを作成し、dependsOnGroupsの代わりにプログラムで(XMLではなく)dependsOnMethodsを使用する必要があります。それから、必要なロジックを簡単に実装できます(すべてのテストは一意です - > @Test注釈、すべてのテストは特定の優先度で実行されます - >優先度パラメータを使用します)。その後、1,2,3テストがあなたのテストクラスになるはずです。だからここにそれはあなたがそれを行う方法です。
public class LoginFeature {
@Test (priority=1)
public openURLTest(){
}
@Test (priority=2, dependsOnMethods="openURLTest")
public dbResetTest(){
}
@Test (priority=3, dependsOnMethods="dbResetTest")
public clearCacheTest(){
}
@Test (priority=4, dependsOnMethods="clearCacheTest")
public loginTest(){
}
}
この方法で何かがあなたのテストの間に障害が発生した場合のシナリオの残りの部分は自動的にスキップされ、あなたが直接clearCacheTestを呼び出す必要はありません。
希望すると便利です。 OPさんのコメント
まあ後
更新
は再び私はあなたがちょっと設計上の問題を持っていると思います。メソッドを複数回呼び出すには、アクセス可能な場所に座る必要があります。あなたはほとんどあなたのアプローチではありますが、かなりありません。メソッドを呼び出す方法は次のとおりです。複数回、それらに最初から毎回実行する(私が最初にあなたのコードを表示し、詳細に説明します):
親クラス
public class TestBase{
//include here all your important methods *without* @Test Annotation
public void dbReset(){
//perform db reset
}
public void clearCache(){
//clear browser cache
}
public boolean openURL(){
//try to open test URL
return didIreachTestURLSuccessfully;
}
}
子クラス
public class loginFeature extends TestBase{
@Test (priority=1)
public void attemptToResetDataBase(){
dbReset();
}
@Test (priority=2, dependsOnMeth0ds="attemptToResetDataBase")
public void clearCacheTest(){
clearCache();
}
@Test (priority=3, dependsOnMeth0ds="clearCacheTest")
public void verifySuccessfulLogin(){
login();
}
}
したがって、すべてのテストメソッドをTestBaseという親クラスに含めます。次に、TestBaseを拡張するクラスを使ってテスト(loginTestなど)を作成します。今度は、あなたのメソッドを複数回呼び出すことができ、毎回個々のテストとして扱い、必要に応じて依存関係を結びつけることができます(つまり、それぞれのメソッドは以前のメソッドに依存しますが、それらを並べ替えて1つに依存する、または1つに依存する)。
あなたのテストクラスはTestBaseを継承しているので、内部メソッドにアクセスするためのオブジェクトを作成する必要はありません。代わりにそれらを直接呼び出すことができます。
これはあなたのためにそれを解決することを望んで、あなたが多くの情報を必要とする場合は、コメントを書くことを躊躇しないでください。
残念ながら、これは私が達成しようとしていたものではありません。これらのテストは既に@Testメソッドとして構築されています。私はそれらのメソッドを他のテストや他のクラスから何回も呼びたいと思っています。今のところ、いくつかのテストがclearCacheTestに依存する場合、それは一度呼び出され、別のテストもまたclearCacheTestに依存する場合、それはすでに渡されているのでもう呼び出されません...しかし、私はそれを渡したいだけでなく、これらの2つのテストの前にキャッシュを2回クリアします。 –
オクジョンは、あなたの更新を反映するために私の答えを更新します。私はまだそれが達成可能だと思う:) –
ほぼそこに;)私は非常に最初にそのアプローチを試して、それも働いたが、すぐに私はそれが私に偽のテストレポートを与えていたことに気づいた。このようにdbResetはテストとして定義されていないので、テスト番号1を実行すると、つまり、loginFeatureTest:(openURLTest - > dbResetTest - > clearCacheTest - > loginTest)、dbResetは何らかの理由で失敗します。 loginFeatureTestが失敗し、実際にはdbResetTestのエラーであることを確認したいと思います。多分、唯一のオプションは、loginFeatureTestの中からdbResetを呼び出して、その結果にメッセージがあると主張することです。 –