Gradle проект, выполняющий jUnit 5 тестов в IntelliJ

Я пытаюсь как Gradle, так и jUnit5 прямо сейчас. Все работает отлично, за исключением того, что я не могу запустить конкретный тест jUnit. Параметр "Run" SampleTest "" не появляется, когда я щелкнул правой кнопкой мыши тестовый класс.

У меня есть последняя версия IntelliJ (2016.1.3) Ultimate. Вот мой build.gradle файл:

repositories {
    mavenCentral()
}

apply plugin: 'java'

version = '1.0.0-SNAPSHOT'

jar {
    baseName = 'test-project'
}

dependencies {
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.0.0-M1'
}

Структура проекта является стандартной (например, в Maven). И вот пример теста:

package com.test;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class SampleTest {
  @Test public void sampleTest() {
    int test = 1;
    Assertions.assertTrue(test == 1);
  }
}

Что мне не хватает?

EDIT:

Кажется, что Gradle тоже не подбирает мой тест. Когда я перехожу к build/reports/tests/index.html, это указывает на 0 тест.

ЗАВЕРШЕНИЕ:

Следуя @dunny ответ, вот что я сделал, чтобы все работало. Я изменил свой файл build.gradle следующим образом:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M1'
    }
}

repositories {
    mavenCentral()
}

apply plugin: 'java'
apply plugin: 'org.junit.platform.gradle.plugin'

version = '1.0.0-SNAPSHOT'

jar {
    baseName = 'test-project'
}

dependencies {
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.0.0-M1'
    testCompile group: 'org.junit.platform', name: 'junit-platform-runner', version: '1.0.0-M1'
    testCompile group: 'junit', name: 'junit', version: '4.12'
    testRuntime group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.0.0-M1'
}

test {
    testLogging {
        events 'started', 'passed'
    }
}

В IntelliJ я открыл окно Gradle и нажал кнопку "Обновить все Gradle проекты", чтобы обновить библиотеки.

Затем в моем тестовом классе я добавил @RunWith(JUnitPlatform.class) поверх объявления класса.

И когда я делаю gradle build, результаты доступны здесь: build\test-results\junit-platform\TEST-junit-jupiter.xml

Ответ 1

IntelliJ 2016.1.3 не поддерживает тесты JUnit 5. Однако вы можете добавить аннотацию @RunWith(JUnitPlatform.class), которая выполнит ваш тест в режиме совместимости JUnit 4 (вы все равно можете использовать все функции JUnit 5). Подробнее см. http://junit.org/junit5/docs/current/user-guide/#running-tests-junit-platform-runner.

Для Gradle вам нужно включить плагин Gradle JUnit 5, чтобы включить поддержку:

buildscript {
    repositories {
        mavenCentral()
        // The following is only necessary if you want to use SNAPSHOT releases.
        // maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
    }
    dependencies {
        classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M1'
    }
}

apply plugin: 'org.junit.platform.gradle.plugin'

См. http://junit.org/junit5/docs/current/user-guide/#running-tests-build

Ответ 2

Последняя идея 2016.2 теперь поддерживает платформу JUnit 5. Вы можете напрямую запустить JUnit5-тест без junit- gradle -plugin. См. ЧТО НОВОГО В ИНТЕЛЛИЙСКОЙ ИДЕИ. После того, как вы обновили свою идею до этой новой версии, вы можете создать проект gradle и выполнить следующие шаги, чтобы проверить, как запустить тест JUnit 5.

  • build.gradle

    apply plugin: 'java'
    
    compileTestJava {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M1")
        testRuntime("org.junit.vintage:junit-vintage-engine:4.12.0-M1")
        //NOTE: if you replaced above testRuntime dependency with following
        //testRuntime("org.junit.jupiter:junit-jupiter-engine:5.0.0-M1")
        //this test would fail.
    }
    
  • Создайте класс FirstJUnit5Test в папке с исходным кодом

    import org.junit.jupiter.api.Test;
    import static org.junit.jupiter.api.Assertions.assertEquals;
    
    public class FirstJUnit5Test {
        @Test
        void myFirstTest() {
            assertEquals(2, 1 + 1);
        }
    }
    
  • Щелкните правой кнопкой мыши на этом тестовом классе в левой панели проекта и выберите "Запустить" FirstJUnit5Test ". Результат будет выглядеть следующим образом: введите описание изображения здесь
  • Для получения дополнительной информации вы можете проверить этот проект из github.

UPDATE

Для IDEA 2016.3.3 и выше конфигурация dependencies может быть упрощена до:

dependencies {
    testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M3")
}

Ответ 3

Вы должны запускать тесты с помощью бегуна JUnit 4, поскольку IntelliJ 2016.1.3 не имеет тестового бегуна JUnit 5.

Если вы начинаете с примера pom.xml, связанного в документации, https://github.com/junit-team/junit5-samples/blob/r5.0.0-M1/junit5-maven-consumer/pom.xml, выполните следующие две вещи.

Добавьте еще одну зависимость

    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-runner</artifactId>
        <version>${junit.platform.version}</version>
    </dependency>

а затем сделать ваш тестовый класс общедоступным и аннотировать его с помощью @RunWith(JUnitPlatform.class).

Теперь ваша среда IDE распознает класс как тест и обеспечит интеграцию.