Как создать конфигурацию JUnit Run / Debug для запуска Suite в IntelliJ IDEA - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть проект Java, который определяет наборы тестов, основанные на категориях тестов, и хочу создать JUnit (версия 4.12) Run / Debug Configuration для выполнения определенных наборов тестов в IntelliJ IDEA Ultimate 2019.2

Категория тестовОпределения / suite выглядят так:

public class TestCategories {
    public interface ResourceTest {}

    @RunWith(Categories.class)
    @Categories.IncludeCategory(ResourceTest.class)
    @Suite.SuiteClasses(AllTests.class)
    public static class ResourceTestSuite {}

    @RunWith(Categories.class)
    @Categories.ExcludeCategory({ResourceTest.class})
    @Suite.SuiteClasses(AllTests.class)
    public static class UnitTestSuite {}

    @RunWith(ClasspathSuite.class)
    @ClasspathSuite.SuiteTypes({SuiteType.RUN_WITH_CLASSES, SuiteType.TEST_CLASSES, SuiteType.JUNIT38_TEST_CLASSES})
    public static class AllTests {}
}

Это включено в мой проект как зависимость ivy, и я не могу ее изменить.Пример тестового класса в моем проекте может выглядеть следующим образом:

public class TestClass {
    @Test
    @Category(ResourceTest.class)
    public void resourceTest() { ... }

    @Test
    public void unitTest() { ... }
}

Я могу создать конфигурацию JUnit Run / Debug, которая успешно выполняет категорию ResourceTest, установив тип теста "Category" и Category в "com".mjames.test.category.TestCategories $ ResourceTest ": Выполнить / отладить конфигурацию

Я пытался использовать тестовую категорию, шаблон и класс для выполнения ResourceTestSuite и не получил егоработай.В случае ResourceTestSuite это не очень важно, потому что выполнение категории ResourceTest эквивалентно, но определение UnitTestSuite - это все тесты, которые не входят в категорию ResourceTest.Как создать конфигурацию Run / Debug для выполнения этого набора тестов?

1 Ответ

0 голосов
/ 21 сентября 2019

Вот конфигурация запуска, которая корректно работает для меня, чтобы запустить ResourceTestSuite enter image description here

Что касается второго случая: UnitTestSuite будет работать в случае, если AllTests класс и UnitTestSuite сам класс аннотированы@Category(ResourceTest.class).В противном случае выполнение теста не будет выполнено с исключением, например:

java.lang.Exception: class 'pack.AllTests' (possibly indirectly) contains itself as a SuiteClass

Вы также можете попробовать запустить UnitTestSuite с @Suite.SuiteClasses(TestClass.class)

...