Порядок выполнения тестов в TestNG

Как настроить порядок выполнения тестов в TestNG?

Например:

public class Test1 {
  @Test
  public void test1() {
      System.out.println("test1");
  }

  @Test
  public void test2() {
      System.out.println("test2");
  }

  @Test
  public void test3() {
      System.out.println("test3");
  }
}

В вышеупомянутом комплекте порядок выполнения тестов произволен. Для одного выполнения вывод может быть:

test1
test3
test2

Как я выполняю тесты в порядке, в котором они были записаны?

70
задан Petter Friberg 24 January 2019 в 21:31
поделиться

4 ответа

Существуют способы выполнения тестов в заданном порядке. Однако обычно тесты должны быть повторяемыми и независимыми, чтобы гарантировать, что они тестируют только желаемую функциональность и не зависят от побочных эффектов кода за пределами того, что тестируется.

Итак, чтобы ответить на ваш вопрос, вам необходимо предоставить дополнительную информацию, например, ПОЧЕМУ важно запускать тесты в определенном порядке.

0
ответ дан 24 November 2019 в 13:16
поделиться

Тесты похожи на модульные? Зачем? Тесты ДОЛЖНЫ быть независимыми, иначе .... вы не сможете запустить тест индивидуально. Если они независимы, зачем вообще мешать? Плюс - что такое "порядок", если вы запускаете их в несколько потоков на нескольких ядрах?

-5
ответ дан 24 November 2019 в 13:16
поделиться

В TestNG вы используете dependsOnMethods и/или dependsOnGroups:

@Test(groups = "a")
public void f1() {}

@Test(groups = "a")
public void f2() {}

@Test(dependsOnGroups = "a")
public void g() {}

В этом случае g() будет выполняться только после того, как f1() и f2() завершатся и будут успешными.

Множество примеров вы найдете в документации: http://testng.org/doc/documentation-main.html#test-groups

64
ответ дан 24 November 2019 в 13:16
поделиться

Если я правильно понял ваш вопрос в том смысле, что вы хотите запускать тесты в определенном порядке, можно использовать TestNG IMethodInterceptor. Посмотрите на http://beust.com/weblog2/archives/000479.html, как их использовать.

Если вам нужна предварительная инициализация, посмотрите на IHookable http://testng.org/javadoc/org/testng/IHookable.html и связанный с ним поток http://groups.google.com/group/testng-users/browse_thread/thread/42596505990e8484/3923db2f127a9a9c?lnk=gst&q=IHookable#3923db2f127a9a9c

4
ответ дан 24 November 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: