TestNG зависит от методов другого класса - PullRequest
26 голосов
/ 07 октября 2011

Атрибут dependsOnMethods аннотации @Test прекрасно работает, когда тест, от которого зависит, находится в том же классе, что и тест, имеющий эту аннотацию.Но это не работает, если тестируемый метод и зависимый метод находятся в разных классах.Пример таков:

class c1 {
  @Test
  public void verifyConfig() {
    //verify some test config parameters
  }
}

class c2 {
  @Test(dependsOnMethods={"c1.verifyConfig"})
  public void dotest() {
    //Actual test
  }
}

Есть ли способ обойти это ограничение?Один простой выход - создать в class c2 тест, который вызывает c1.verifyConfig().Но это было бы слишком много повторений.

Ответы [ 3 ]

32 голосов
/ 08 октября 2011

Поместите метод в 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
  }
}
1 голос
/ 23 августа 2018

DependsOnMethods нельзя использовать из другого класса. Чтобы решить эту проблему, мы можем использовать зависящие от группы;

Изменить код в;

1. Зависимый классOnGroups;

@ Test (groups = {"prerequisites"})

public void M1()
{

}

2. класс, который вызывает зависящий от группы;

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

{

}

3. XML

<groups>
    <run>
        <include name ="prerequisites"/>
    </run>
</groups>
0 голосов
/ 29 августа 2018

Вы можете использовать groups и dependsOnGroups в аннотации TestNG @Test, как описано в предыдущих ответах.

Однако оба класса должны находиться под одним и тем же <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...