Порядок выполнения тестов в TestNG - PullRequest
68 голосов
/ 19 апреля 2010

Как настроить порядок выполнения тестов в 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

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

Ответы [ 17 ]

1 голос
/ 21 августа 2012

Используя параметр приоритета для @Test, мы можем контролировать порядок выполнения теста.

1 голос
/ 16 мая 2014

Свинья отступление от ответа пользователя 1927494, Если вы хотите запустить один тест раньше всех остальных, вы можете сделать это:

@Test()
public void testOrderDoesntMatter_1() {
}

@Test(priority=-1)
public void testToRunFirst() {
}

@Test()
public void testOrderDoesntMatter_2() {
}
0 голосов
/ 04 сентября 2017

В случае, если вы используете дополнительные вещи, такие как dependsOnMethods, вы можете определить весь поток @Test в файле testng.xml. AFAIK, порядок, определенный в XML-файле вашего комплекта (testng.xml), переопределит все остальные стратегии упорядочения.

0 голосов
/ 19 апреля 2010

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

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

0 голосов
/ 14 марта 2018

use: preserve-order = "true" enabled = "true" это будет запускать контрольные примеры так, как вы написали.

<suite name="Sanity" verbose="1" parallel="" thread-count="">   
<test name="Automation" preserve-order="true"  enabled="true">
        <listeners>
            <listener class-name="com.yourtest.testNgListner.RetryListener" />
        </listeners>
        <parameter name="BrowserName" value="chrome" />
        <classes>
            <class name="com.yourtest.Suites.InitilizeClass" />
            <class name="com.yourtest.Suites.SurveyTestCases" />
            <methods>
                <include name="valid_Login" />
                <include name="verifyManageSurveyPage" />
                <include name="verifySurveyDesignerPage" />
                <include name="cloneAndDeleteSurvey" />
                <include name="createAndDelete_Responses" />
                <include name="previewSurvey" />
                <include name="verifySurveyLink" />
                <include name="verifySurveyResponses" />
                <include name="verifySurveyReports" />
            </methods>
        </classes>
    </test>
</suite>
0 голосов
/ 02 сентября 2018

Ответ с важным объяснением:

Существует два параметра " TestNG ", которые должны определять порядок выполнения тестов:

@Test(dependsOnGroups= "someGroup")

И

@Test(dependsOnMethods= "someMethod")

В обоих случаях эти функции будут зависеть от метода или группы,

Но различия:

В этом случае:

@Test(dependsOnGroups= "someGroup")

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

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

Однако в этом случае:

@Test(dependsOnMethods= "someMethod")

Даже если этот параметр используется более одного раза в одном и том же наборе тестов, зависимый метод все равно будет выполнен после немедленного выполнения зависимого метода.

Надеюсь, это понятно и поможет.

0 голосов
/ 19 апреля 2010

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

...