У библиотеки тестирования TestNG для аннотации @Test есть возможность отключать определённые тесты с помощью атрибута enabled = false.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package ru.urvanov.javaexamples.testngenabledclassmethod; import org.testng.annotations.Test; public class AppTest { @Test(enabled = false) public void test1() { System.out.println("disabled test"); } @Test public void test2() { System.out.println("enabled test"); } } |
В этом примере мы отключили тест test1 с помощью @Test(enabled = false), а тест test2 оставили включённым (без enabled = false).
Аннотацию @Test можно ставить над всем классом. В таком случае можно писать @Test(enabled = false), что отключит тесты во всём классе. Однако возникает небольшая неочевидность в том, что аннотации @Test у методов имеют приоритет над @Test класса. Если у всего класса поставить @Test(enabled = false), то для того чтобы отключение тестов отработало, нужно чтобы у методов не было аннотации @Test, так как она переопределит аннотацию класса и включит свой тест.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package ru.urvanov.javaexamples.testngenabledclassmethod; import org.testng.annotations.Test; @Test(enabled = false) public class AppTest { /** * Здесь используется аннотация класса, где мы отключили тесты в AppTest. */ public void test1() { System.out.println("disabled test"); } /** * Здесь наша аннотация у метода без enabled = false. Она переопределяет * аннотацию класса и включает тест test2. */ @Test public void test2() { System.out.println("enabled test"); } } |