_@Test
_アノテーションのdependsOnMethods
属性は、依存するテストがこのアノテーションを持つテストと同じクラスにある場合に正常に機能します。ただし、テストされるメソッドと依存されるメソッドが異なるクラスにある場合は機能しません。例は次のとおりです。
_class c1 {
@Test
public void verifyConfig() {
//verify some test config parameters
}
}
class c2 {
@Test(dependsOnMethods={"c1.verifyConfig"})
public void dotest() {
//Actual test
}
}
_
この制限を回避する方法はありますか?簡単な方法の1つは、c1.verifyConfig()
を呼び出すテストを_class c2
_で作成することです。しかし、これは繰り返しが多すぎます。
メソッドをgroup
に入れ、dependsOnGroups
を使用します。
class c1 {
@Test(groups={"c1.verifyConfig"})
public void verifyConfig() {
//verify some test config parameters
}
}
class c2 {
@Test(dependsOnGroups={"c1.verifyConfig"})
public void dotest() {
//Actual test
}
}
テストが実行されないように、@Before
*の構成を確認し、問題が発生した場合はスローすることをお勧めします。このようにして、テストはテストのみに集中できます。
class c2 {
@BeforeClass
public static void verifyConfig() {
//verify some test config parameters
//Usually just throw exceptions
//Assert statements will work
}
@Test
public void dotest() {
//Actual test
}
}
@Test(groups = {"前提条件"})
public void M1()
{
}
@Test(dependsOnGroups={"prerequisites"})
public void M2()
{
}
<groups>
<run>
<include name ="prerequisites"/>
</run>
</groups>
以前の回答で説明したように、TestNG @Test
アノテーションでgroups
およびdependsOnGroups
を使用できます。
ただし、両方のクラスは同じ<test>
の下にある必要があります。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite" verbose="1" >
<test name="Test" >
<classes>
<class name="c1" />
<class name="c2" />
</classes>
</test>
</suite>
次の場合、テストスイートの実行時に例外が発生します。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" >
<test name="Test1" >
<classes>
<class name="c1" />
</classes>
</test>
<test name="Test2">
<classes>
<class name="c2" />
</classes>
</test>
</suite>