выполнение тестового набора testNG в определенном порядке вместе с возможностью запуска из определенного тестового набора

Как сделать выполнение тестового набора testNG в определенном порядке вместе с возможностью начать выполнение из определенного тестового набора.

Например, Если вы запустите пакет ниже

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

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

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

Порядок, в котором будут выполняться тестовые наборы, всегда будет test1, test2, test3. Но скажите, что когда-нибудь я хочу начать выполнение с test2, а НЕ с test1, т.е. я хочу запустить test2, а затем test3 и без запуска test1. Как я могу этого добиться?


person user1559660    schedule 28.07.2012    source источник


Ответы (3)


Вы можете использовать IAnnotationTransformer, который превратит атрибут enabled в @Test в false. Однако вам также придется настроить зависимости.

Я думаю, что, вероятно, проще поместить эту логику в сам тестовый метод (если определенное условие истинно, просто ничего не делайте вместо запуска теста и его утверждений).

person Cedric Beust    schedule 28.07.2012

Я предлагаю добавить ваши тесты в группы, а затем управлять поведением извне с помощью testng.xml, указав <group>, дайте мне знать, если вам понадобится дополнительная помощь по этому поводу.

person Mrunal Gosar    schedule 12.12.2014

Простая идея состоит в том, чтобы установить приоритет для другого теста; имейте в виду, что значение по умолчанию для приоритета = 0.

@Test(priority=1)
public void t1(){}

@Test
public void t0(){}

@Test(priority=2)
public void t2(){}

@Test(priority=3)
public void t3(){}

Таким образом, последовательность выполнения будет t0 -> t1 -> t2 -> t3. t0 выполняется первым, так как его приоритет по умолчанию равен 0.

Надеюсь это поможет.

person Kshetra Mohan Prusty    schedule 28.03.2018