Интегрировать результаты испытаний 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'
}
Надеюсь это поможет.