Testng priority / group-by-instance = "true" не работает

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

class TestClass1 {
    @Test(priority = 0, alwaysRun = true)
    public void test1() {
        System.out.println("Test1 of TestClass1");
    }

    @Test(priority = 1, alwaysRun = true)
    public void test2() {
        System.out.println("Test2 of TestClass1");
    }

    @Test(priority = 2, alwaysRun = true)
    public void test3() {
        System.out.println("Test3 of TestClass1");
    }

    @Test(priority = 3, alwaysRun = true)
    public void test4() {
        System.out.println("Test4 of TestClass1");
    }
}

class TestClass2 {
    @Test(priority = 0, alwaysRun = true)
    public void test1() {
        System.out.println("Test1 of TestClass1");
    }

    @Test(priority = 1, alwaysRun = true)
    public void test2() {
        System.out.println("Test2 of TestClass1");
    }

    @Test(priority = 2, alwaysRun = true)
    public void test3() {
        System.out.println("Test3 of TestClass1");
    }

    @Test(priority = 3, alwaysRun = true)
    public void test4() {
        System.out.println("Test4 of TestClass1");
    }
}

Мой TestNg.xml

<suite thread-count="2" verbose="10" name="testSuite" parallel="tests">
<test verbose="2" name="MytestCase" group-by-instances="true">
    <classes>
        <class name="com.sampleTests.TestClass1" />
        <class name="com.sampleTests.TestClass2" />
    </classes>
</test>
</suite>

когда я запускаю свой TestNg.xml, вывод

[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.141 s - in TestSuite
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

Где у меня всего 8 методов @Test, но он просто выполняет 1-й тест каждого класса и игнорирует остальные тесты без какой-либо трассировки стека.

у вас это получается, когда вы называете это Maven Test?

Ishita Shah 11.08.2018 07:05

@Ishita Shah - я выполняю с помощью команд mvn. mvn test. Если я не использую group-by-instance = "true", тогда он выполняет тестовые примеры с приоритетом 1, 1-й из каждого класса, затем тестовые примеры с приоритетом 2, затем тестовые примеры с приоритетом 3., Вместо выполнения приоритета 1,2,3 1-го класса. и приоритет 1,2,3 2-го класса

Atitkumar Shingatalur 11.08.2018 18:40
0
2
761
2

Ответы 2

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

В любом случае, было бы лучше использовать группы и параметры dependsOnMethod / Group вместо приоритетов.

Для этой проблемы нет связи с group by.

Это причина привязки основного класса. Несколько классов в одном классе, где TestNG начинает приоритет с имени класса Java и далее.

Вы можете решить проблему несколькими способами:

  • Не храните @Test в связанном классе Java. И держите оба класса отдельно друг от друга, у вас будет успешное выполнение 8 тестов.

enter image description here

  • Удалите приоритет из класса привязки Java. priority выполняет только один тест в классе привязки Java.

    enter image description here

Оба случая имеют разное выполнение теста, предпочтите его в соответствии с требованиями.

Примечание. Это решение применимо, только если в одном классе есть несколько классов. Один класс с Multiple @Test отлично работает.

Оба «TestClass1» и «TestClass2» - это два разных класса. Мое ожидание порядка выполнения: сначала он должен выполнить TestClass1 => test1, test2, test3, test4, а затем TestClass2 => test1, test2, test3, test4. Но когда я удаляю group-by-instances="true", он выполняет TestClass1 => test1, TestClass2 => test1, TestClass1 => test2, TestClass2 => test2, tTestClass1 => test3, TestClass2 => test3, TestClass1 => test4, TestClass2 => test4.

Atitkumar Shingatalur 13.08.2018 09:37

@AtitkumarShingatalur Пожалуйста, прочтите мой ответ. 1-е решение будет работать.

Ishita Shah 13.08.2018 09:45

В вашем первом порядке выполнения решения является TestClass1 =>test1, TestClass2 =>test1, TestClass1 =>test2, TestClass2 =>test2, tTestClass1 =>test3, TestClass2 =>test3, TestClass1 =>test4, TestClass2 =>test4, а во втором решении порядок выполнения соответствует моим требованиям, но вы удалили приоритеты @Test, здесь он выполняется, чтобы имена тестов bcz в порядке, но в моем проекте мои тестовые имена разные, и я хочу, чтобы они выполнялись по порядку, поэтому мне нужны приоритеты, и мне нужен вывод как TestClass1 =>test1, test2, test3, test4, а затем TestClass2 =>test1, test2, test3, test4

Atitkumar Shingatalur 13.08.2018 11:07

Версия TestNG, которую я использую, - 6.14.3

Atitkumar Shingatalur 13.08.2018 11:33

@Atitkumar Shingatalur, есть ли у вас какое-либо решение вышеуказанного.

Aditi 07.07.2020 12:27

Другие вопросы по теме