Vertx (модуль vertx-Junit5) Тесты не найдены

Я пытался внедрить Junit5 в свой проект Vertx.

Простое добавление junit5 работает нормально, но с добавлением модуля vertx-junit5 в проект у TestEngine возникли проблемы с поиском тестов.

build.gradle:

buildscript {
    repositories {
        mavenCentral()
        dependencies {
            classpath 'org.junit.platform:junit-platform-gradle-plugin:1.1.0'
            classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.5"            
        }
    }
}

plugins {
    id'java'
    id'application'
    id'eclipse'
}

apply plugin: 'org.junit.platform.gradle.plugin'
apply plugin: 'maven'
apply plugin: "org.sonarqube"

def vertxVersion = "3.5.1"
version = 0.4

compileJava.options.encoding = 'UTF-8'
tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

dependencies {
    compile "io.vertx:vertx-core:$vertxVersion"
    compile "io.vertx:vertx-service-proxy:$vertxVersion"
    compile "io.vertx:vertx-sockjs-service-proxy:$vertxVersion"
    compile "io.vertx:vertx-hazelcast:$vertxVersion"
    compile "io.vertx:vertx-web:$vertxVersion"
    compile "io.vertx:vertx-config:$vertxVersion"

    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.6'

    testCompile group: 'io.vertx', name: 'vertx-unit', version: vertxVersion
    testCompile group: 'io.vertx', name: 'vertx-junit5', version: vertxVersion
    testCompile 'org.assertj:assertj-core:3.9.0'

    //Junit 5
    testCompile("org.junit.jupiter:junit-jupiter-api:5.1.0")
    testRuntime("org.junit.jupiter:junit-jupiter-engine:5.1.0")
    //Junit 5 vintage to run Junit4 Tests
    testCompile("junit:junit:4.12")
    testRuntime("org.junit.vintage:junit-vintage-engine:5.1.0")

    compileOnly 'io.vertx:vertx-codegen:3.4.2'
}

без:

testCompile group: 'io.vertx', name: 'vertx-junit5', version: vertxVersion

Механизм тестирования находит тесты и не создает проблем

но с этой зависимостью

Никаких тестов не найдено

22 февраля 2018 г. 14:41:28 org.junit.platform.launcher.core.DefaultLauncher handleThrowable ПРЕДУПРЕЖДЕНИЕ: TestEngine с идентификатором 'junit-jupiter' не смог обнаружить тесты java.lang.NoSuchMethodError: org.junit.platform.engine. support.filter.ClasspathScanningSupport.buildClassFilter (Lorg / junit / platform / engine / EngineDiscoveryRequest; Ljava / util / function / Predicate;) Lorg / junit / platform / commons / util / ClassFilter; на org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors (DiscoverySelectorResolver.java:49) на org.junit.jupiter.engine.JupiterTestEngine.discover (JupiterTestEngine.java:61) на org.java:61) на org.java:61) .DefaultLauncher.discoverEngineRoot (DefaultLauncher.java:130) по адресу org.junit.platform.launcher.core.DefaultLauncher.discoverRoot (DefaultLauncher.java:117) по адресу org.junit.platform.launcher.core.DefcoverLauncherLauncher. : 82) по адресу com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs (JUnit5IdeaTestRunner.java:48) в com.intellij.rt.execution.junit.IdeaTestRunner $ Repeater.startgsRunner.junner.java.withArtell: Repeater.startgsRunner. execute.junit.JUnitStarter.prepareStreamsAndStart (JUnitStarter.java:242) в com.intellij.rt.execution.junit.JUnitStarter.main (JUnitStarter.java:70)

22 февраля 2018 г. 14:41:28 org.junit.platform.launcher.core.DefaultLauncher handleThrowable ПРЕДУПРЕЖДЕНИЕ: TestEngine с идентификатором 'junit-jupiter' не смог обнаружить тесты java.lang.NoSuchMethodError: org.junit.platform.engine. support.filter.ClasspathScanningSupport.buildClassFilter (Lorg / junit / platform / engine / EngineDiscoveryRequest; Ljava / util / function / Predicate;) Lorg / junit / platform / commons / util / ClassFilter; в org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors (DiscoverySelectorResolver.java:49) в org.junit.jupiter.engine.JupiterTestEngine.discover (JupiterTestEngine.java:61) в org.java:61) .DefaultLauncher.discoverEngineRoot (DefaultLauncher.java:130) в org.junit.platform.launcher.core.DefaultLauncher.discoverRoot (DefaultLauncher.java:117) в org.junit.platform.launcher.core.DefaultLauncher.exe (DefaultLauncher.core.DefaultLauncher.exe : 90) на com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs (JUnit5IdeaTestRunner.java:62) на com.intellij.rt.execution.junit.IdeaTestRunner $ на com.startgsRunner. execute.junit.JUnitStarter.prepareStreamsAndStart (JUnitStarter.java:242) в com.intellij.rt.execution.junit.JUnitStarter.main (JUnitStarter.java:70)

Процесс завершен с кодом выхода 0 Пустой набор тестов.

Я не понимаю, почему зависимость влияет на testEngine

Я использую IntelliJ 2017.2.6

и я пытаюсь удачи с Тестом как можно проще

import io.vertx.junit5.VertxTestContext;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

public class test {

    @Test
    @DisplayName("woop woooooooop")
    void Test(){
        VertxTestContext context = new VertxTestContext();
        context.succeeding();
    }
}

person Tordus    schedule 22.02.2018    source источник


Ответы (2)


Возможно, вы пропустили аннотацию расширения JUnit5 для своего тестового класса:

@ExtendWith(VertxExtension.class)
public class test {
    ...
}
person IUnknown    schedule 07.11.2018

Возможно, вам следует предоставить дополнительную конфигурацию в блоке junitPlatform (см. https://junit.org/junit5/docs/current/user-guide/#running-tests-build-gradle)

При использовании Gradle я обычно включаю задачу test, используя:

junitPlatform { enableStandardTestTask true }

Вот отрывок из build.gradle, который у меня работает:

buildscript {
  repositories {
    mavenCentral()
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.io.vertx:vertx-gradle-plugin:0.0.8"
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.21"
    classpath "org.junit.platform:junit-platform-gradle-plugin:1.0.3"
  }
}

apply plugin: "io.vertx.vertx-plugin"
apply plugin: "org.jetbrains.kotlin.jvm"
apply plugin: "org.junit.platform.gradle.plugin"

repositories {
  mavenCentral()
}

group 'io.github.jponge'
version '0.0.1-SNAPSHOT'

dependencies {
  compile "org.jetbrains.kotlin:kotlin-stdlib-jre8"
  compile "ch.qos.logback:logback-classic:1.2.3"

  compile "io.vertx:vertx-web"
  compile "io.vertx:vertx-lang-kotlin"
  compile "io.github.jponge:vertx-boot:0.0.1"

  testCompile "io.vertx:vertx-junit5"

  testCompile "org.junit.jupiter:junit-jupiter-api:5.0.3"
  testCompile "org.junit.jupiter:junit-jupiter-engine:5.0.3"
  testCompile "org.apiguardian:apiguardian-api:1.0.0"
  testCompile "org.junit.platform:junit-platform-launcher:1.0.3"
}

vertx {
  vertxVersion = "3.5.1"
  mainVerticle = "io.github.jponge.vertx.boot.BootVerticle"
}

junitPlatform {
  enableStandardTestTask true
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
  kotlinOptions {
    jvmTarget = "1.8"
  }
}

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

person jponge    schedule 23.02.2018
comment
Нет, это не изменило ситуацию. Я попытался воспроизвести неудачу в минимальном проекте, чтобы выяснить, где мне искать. но, кажется, сложнее понять, что приводит к этой неудаче. Иногда помогает удалить зависимость, но не в реальном проекте. Если я запускаю его в минимальном проекте, и я копирую градиент сборки, он не работает. - person Tordus; 23.02.2018
comment
Можете ли вы опубликовать проект минимального репродуктора где-нибудь на GitHub? - person jponge; 23.02.2018
comment
github.com/Tordu5/Vertx-junit5-issue это просто тестовый класс и Градл. здесь он не работает, но когда я меняю группу с группы «проект» на группу «com.project», она снова работает. Иногда это просто удаление зависимости или еще одного Backspace. Но в основном проекте это не помогает. Я удалил все, кроме градиента, и тестовый класс также удалил все зависимости, ожидая базовых требований для модуля junit test +, и он не работал. - person Tordus; 23.02.2018
comment
Gradle 4.6 обеспечивает прямую поддержку JUnit5, поэтому вам больше не нужен org.junit.platform.gradle.plugin. Ты пробовал это? - person jponge; 05.03.2018
comment
Нет, проблема все еще существует. - person Tordus; 08.03.2018