私はtestngを試しています。私の目標は、いくつかのクラスにテストメソッドを用意し、別のクラスに一連のテストを準備してまとめるための「サポート」メソッドを用意することです。
もう1つの要件は、テストスイートでは、複数のテストパーツに対してサポートメソッドを呼び出す必要があることです。たとえば、testAとtestBを含む最初の部分と、testCとtestDを含む2番目の部分です。これにより、次の手順が実行されます。
support1、testA、testB、support2、support1、testC、testD、support2
(部分的に)機能した私の最初のアプローチは、すべてのメソッドに注釈を付け@Test
、グループを使用し、グループ間の依存関係を定義することでした。たとえば、テストメソッドはグループ「setUp」に依存します。これは、上記の例の1つのサポートメソッド「support1」のグループです。 。
このアプローチの問題は、サポートするメソッドがテストとしてカウントされるため、生成されたレポートに誤った数の「実際の」テストが表示されることです。
次のアイデアは、とを使用@BeforeGroups
し@AfterGroups
、サポートメソッドをグループに入れ、グループの依存関係を使用することでした。サポートするメソッドは、もはやテストとしてカウントされるべきではありません。しかし、私は最初から立ち往生しています。たとえば、私は試しました
@BeforeGroups (groups = {"setUp"})
クラスのセットアップメソッドの場合Support
、および
@Test(groups = { "TestA" }, dependsOnGroups = { "setUp" })
「実際の」テストクラスで。これにより、次の(単純化された)エラーが発生します。
[testng] DependencyMap::Method "TestClass.testSomething()[...]" depends on nonexistent group "setUp"
グループ「setUp」が存在しないのはなぜですか?私は何かを見落としましたか?
または、機能する別のアプローチはありますか?
ご協力いただきありがとうございます!
編集: テストはAntで開始され、次のようなtestng.xmlを使用します。
<test name="TestA">
<groups>
<run>
<include name="setUp" />
<include name="TestA"/>
<include name="tearDown"/>
</run>
</groups>
<classes>
<class name="seleniumtest.test.technical.Support"/>
<class name="seleniumtest.test.business.TestClassA"/>
</classes>
</test>
<test name="TestB">
<groups>
<run>
<include name="setUp" />
<include name="TestB"/>
<include name="tearDown"/>
</run>
</groups>
<classes>
<class name="seleniumtest.test.technical.Support"/>
<class name="seleniumtest.test.business.TestClassB"/>
</classes>
</test>