Подтвердить что ты не робот

TestNG зависит от методов из разных классов

Атрибут 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(). Но это было бы слишком много повторения.

4b9b3361

Ответ 1

Поместите метод в 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
  }
}