Как включить несколько категорий в junit4?

Я хочу включить несколько категорий для бегуна junit.

Код Java

@RunWith(Categories.class)
@IncludeCategory(IMAP.class , POP.class)
@SuiteClasses({MailTestSuites.class})
public class TestSuiteRunner{

}

Я хочу запустить свой тестовый набор только для этих двух категорий. У меня есть категории для почтового набора, такие как "IMAP, POP, SMTP, POP3". Теперь я хочу запускать только категории "IMAP, POP". Как запустить junit?

Ответ 1

Нет, вы не можете определить несколько значений @IncludeCategory в одном Categories.

Я рекомендую вам использовать несколько Categories для запуска тестовых примеров. (Отдельные тестовые примеры IMAP и POP)

//IMAP tests
@RunWith(Categories.class)
@IncludeCategory(IMAP.class)
@SuiteClasses({MailTestSuites1.class})
public class TestSuiteRunner1{}

//POP tests
@RunWith(Categories.class)
@IncludeCategory(POP.class)
@SuiteClasses({MailTestSuites2.class})
public class TestSuiteRunner2{}

//Merge into one Test
@RunWith(Suite.class)
@Suite.SuiteClasses({TestSuiteRunner1.class, 
    TestSuiteRunner2.class})
public class AllTests {}

Ответ 2

До версии JUnit 4.11, @IncludeCategory и @ExcludeCategory поддерживается только одно значение. Однако, начиная с предстоящего выпуска 4.12, ему будет разрешено передавать несколько значений.

В соответствии с документацией в исходном коде вы можете написать:

@RunWith(Categories.class)
@IncludeCategory({IMAP.class, POP.class})
@SuiteClasses({MailTestSuites.class})