Запускайте методы, аннотированные @Category из IntelliJ IDEA - PullRequest
0 голосов
/ 10 мая 2018

У меня есть тестовый класс с несколькими методами тестирования, которые я хотел бы сгруппировать по некоторым критериям.Для этой цели использование аннотации @Category в JUnit на уровне методов показалось хорошим решением:

public class TestClass {
    @Test
    @Category(AssignmentServiceCategory.class)
    public void testMethod1() {}

    @Test
    @Category(OtherCategory.class)
    public void testMethod2() {}
}

Я хотел бы создать различные конфигурации прогонов в IntelliJ IDEA для этих отдельных категорий, чтобы только тестовые методыаннотируются с определенной категорией.Моя конфигурация выглядит следующим образом: IntelliJ IDEA JUnit run configuration

Однако, когда я запускаю это, запускаются все тесты из класса, где объявлен метод, а не только те, которые отмечены какуказанная категория.Моя конфигурация неверна или IDEA допускает только аннотации уровня @Category?

Версии:

  • IntelliJ IDEA 2018.1 (181.4203.550)
  • JRE: 1.8.0_152-release-1136-b20 amd64
  • JUnit 4.12

1 Ответ

0 голосов
/ 10 мая 2018

ОБНОВЛЕНО

Я попытался воспроизвести проблему и не смог.

Вот мой тестовый класс

package com.mytests.category;

import org.junit.Test;
import org.junit.experimental.categories.Category;

public class MyTest {
    @Test
    @Category(PerformanceTests.class)
    public void testMethod1() {
        System.out.println("method1");
    }

    @Test
    @Category(RegressionTests.class)
    public void testMethod2() {
        System.out.println("method2");
    }
}

Убедитесь, что у вас есть необходимые интерфейсы. В JUnit вам нужно создать маркерные интерфейсы для представления категорий:

package com.mytests.category;

public interface RegressionTests {}

и

package com.mytests.category;

public interface PerformanceTests {}

Затем в IntelliJ я запустил тесты один раз, и он автоматически создал для меня конфигурацию. Затем я редактирую конфигурацию

Config Screenshot

Результаты были ожидаемыми: Только testMethod1 было выполнено.

СТАРЫЙ ОТВЕТ

Или из документа IntelliJ's (https://www.jetbrains.com/help/idea/run-debug-configuration-junit.html)

Категория Выберите эту опцию, если вы хотите запускать только тестовые классы и методы испытаний, которые помечены либо с категорией, заданной с @IncludeCategory аннотация или подтип этой категории. Заполните следующие поля:

Категория Укажите нужную категорию. Введите название категории или нажмите Кнопка обзора и выберите нужную категорию в открывшемся диалоговом окне.

Или Вы можете создать TestSuite и указать (там), какие категории следует включить в комплект.

Что-то вроде

package org.mytests.category;

import org.junit.experimental.categories.Categories;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Categories.class)
@Categories.IncludeCategory(RegressionTests.class)
@Suite.SuiteClasses({ClassA.class, ClassB.class, ClassC.class})
public class RegressionTestSuite {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...