Интегрировать результаты испытаний JUnit 5 с протоколом испытаний Intellij

Мой 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:5.0.0-M1")
}

и простой тест, как это:

public class JUnit5Test {
    @Test
    void test() {

    }
}

Когда я выполняю свой тест, я вижу это в консоли:

Test run finished after 76 ms
[         1 tests found     ]
[         0 tests skipped   ]
[         1 tests started   ]
[         0 tests aborted   ]
[         1 tests successful]
[         0 tests failed    ]

BUILD SUCCESSFUL

Но в протоколе испытаний ничего нет:

введите описание изображения здесь

Что я делаю не так? Как интегрировать результаты JUnit 5 в окна отчетов о тестировании?

Я использую Intellij 2016.2

3 ответа

Начиная с версии 2016.2 это теперь полностью поддерживается. Он работает так же, как и с результатами теста junit4: вам нужно активировать плагин JUnit (см. Меню "Файл", пункт "Настройки...", раздел "Плагины").

Не используйте окно инструмента Gradle для запуска теста, используйте инструменты IDE напрямую. Они включают:

  • Нажмите на значок поля (выглядит как зеленый кружок с наложенным небольшим значком "play") и выберите "Run" или "Debug".
  • Щелкните правой кнопкой мыши имя класса или метода и выберите "Выполнить" или "Отладка".
  • С помощью меню "Выполнить" любой пункт меню с "Выполнить" или "Отладка"
  • Выберите тестовый класс в выпадающей панели настройки конфигурации, затем нажмите зеленый значок "Play".

Обратите внимание, что в настоящее время @TestFactory методы не могут быть запущены таким образом. Это может быть очень запутанным, если у вас есть занятия только с @TestFactory методы! Вы можете обойти это, добавив манекен @Test метод к классам, содержащим @TestFactory методы, затем запустите класс, как описано выше. @TestFactory методы найдены правильно, когда весь класс запущен.

Когда вы выполняете тесты с Gradle, вы выводите результаты на консоль, как показано выше. Если вы хотите увидеть результаты в окне отчета теста Idea, вы можете просто выполнить тест в среде IDE с помощью новой встроенной поддержки: https://www.jetbrains.com/idea/whatsnew/

Надеюсь, что помогает - с уважением Матиас

Насколько я понимаю (и я все еще учусь), вам нужно использовать основанный на JUni4 бегун, чтобы запускать и просматривать результаты в Intellij (src JUnit5 docs). Для этого вам нужно включить артефакт junit-platform-runner в вашем файле gradle.build. На этом замечании представленные примеры файлов gradle.build кажутся немного более сложными, чем то, что вы представили.

Я наконец-то запустил JUnit5 в Intellij, начав с файла gradle.build, показанного в примере junit5-gradle-consumer, поиграв с ним, ударившись головой и т. Д., Пока не заработал. Существуют различия, когда я запускаю тесты в консоли с Gradle и запускаю их в Intellij. Иногда Intellij не идентифицирует тестовый класс как тест, особенно для вложенных тестов. Но я могу щелкнуть правой кнопкой мыши по отдельным классам и запустить их в Intellij.

Ниже мой хак файла gradle.build, в котором все работает в intellij (включая то, что я закомментировал и добавил).

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

repositories {
    mavenCentral()
}

ext.junit4Version        = '4.12'
ext.junitVintageVersion  = '4.12.0-M2'
ext.junitPlatformVersion = '1.0.0-M12'
ext.junitJupiterVersion  = '5.0.0-M2'
ext.junitPlatformConsoleVersion = '1.0.0-M2'
ext.log4JVersion         = '2.5'

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

jar {
    baseName = 'x2'
    version = '1.0.0-SNAPSHOT'
}

compileTestJava {
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    options.compilerArgs += '-parameters'
}

junitPlatform {
    // platformVersion '1.0.0-SNAPSHOT'
    engines {
         include 'junit-jupiter', 'junit-vintage'
        // exclude 'custom-engine'
    }
    tags {
        // include 'fast'
        // exclude 'slow'
    }
    // includeClassNamePattern '.*Test'
    // enableStandardTestTask true
    // reportsDir "build/test-results/junit-platform" // this is the default
    // logManager 'org.apache.logging.log4j.jul.LogManager'
}

dependencies {

    // JUnit Jupiter API and TestEngine implementation
    testCompile("org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}")
    testRuntime("org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}")

    testCompile("org.junit.platform:junit-platform-console:${junitPlatformConsoleVersion}")
    testRuntime("org.junit.platform:junit-platform-console:${junitPlatformConsoleVersion}")

    // added to run via test suite
    testCompile("org.junit.platform:junit-platform-runner:${junitPlatformConsoleVersion}")
    testRuntime("org.junit.platform:junit-platform-runner:${junitPlatformConsoleVersion}")

    // If you also want to support JUnit 3 and JUnit 4 tests
    //testCompile("junit:junit:${junit4Version}")
    //testRuntime("org.junit.vintage:junit-vintage-engine:${junitVintageVersion}")

   // testRuntime("org.apache.logging.log4j:log4j-core:${log4JVersion}")
   // testRuntime("org.apache.logging.log4j:log4j-jul:${log4JVersion}")
}

task wrapper(type: Wrapper) {
    distributionUrl = 'https://services.gradle.org/distributions/gradle-2.14.1-bin.zip'
}

Надеюсь это поможет.

Другие вопросы по тегам