web-dev-qa-db-ja.com

異なるクラスのTestNGdependOnMethods

_@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_で作成することです。しかし、これは繰り返しが多すぎます。

26
brayne

メソッドを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
  }
}
32
Cedric Beust

DependsOnMethodsは別のクラスからは使用できません。これを解決するには、dependsOnGroupsを使用できます。

コードを変更してください。

1.dependsOnGroupsクラス;

@Test(groups = {"前提条件"})

public void M1()
{

}

2.dependsOnGroupsを呼び出すクラス。

@Test(dependsOnGroups={"prerequisites"})
public void M2()

{

}

3. xml

<groups>
    <run>
        <include name ="prerequisites"/>
    </run>
</groups>
1
RANA DINESH

以前の回答で説明したように、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>
0
Samer Makary