猿问

如何在多模块项目中使用 JUnit5 和 SpringBoot2 通过 gradle

我创建了一个空的 gradle 项目,内部包含单个模块(子项目),也作为 gradle 项目,但使用 Spring boot 2。


主要(无标题1)build.gradle:


group 'com.example'

version '1.0-SNAPSHOT'


allprojects {

    repositories {

        mavenCentral()

    }

}

设置.gradle:


rootProject.name = 'main-project'

include 'new-one'

子项目(新项目):构建 gradle:


plugins {

    id("java")

    id("org.springframework.boot") version "2.1.8.RELEASE"

    id("io.spring.dependency-management") version "1.0.8.RELEASE"

}


group = 'com.example'

version '1.0-SNAPSHOT'


sourceCompatibility = 1.12


dependencies {

    implementation 'org.springframework.boot:spring-boot-dependencies:2.0.5.RELEASE'

    implementation 'org.springframework.boot:spring-boot-starter-web'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'


    def junit = '5.5.2'

    testImplementation ("org.junit.jupiter:junit-jupiter-api:${junit}")

    testImplementation ("org.junit.jupiter:junit-jupiter-params:${junit}")

    testImplementation ("org.assertj:assertj-core:3.11.1")

    testRuntime("org.junit.jupiter:junit-jupiter-engine:${junit}")

}


test {

    useJUnitPlatform()

}

使用测试运行器运行测试:IntelliJ idea 编译并通过测试,但是当我使用 gradle 时,如果我运行单个测试,它会返回:

Testing started at 2:48 PM ...

> Task :new-one:cleanTest

> Task :new-one:compileJava UP-TO-DATE

> Task :new-one:processResources NO-SOURCE

> Task :new-one:classes UP-TO-DATE

> Task :new-one:compileTestJava

> Task :new-one:processTestResources NO-SOURCE

> Task :new-one:testClasses

> Task :new-one:test FAILED

Sep 30, 2019 2:48:53 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable

WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests

java.lang.NoClassDefFoundError: org/junit/platform/engine/support/discovery/Sel


小怪兽爱吃肉
浏览 99回答 1
1回答

江户川乱折腾

如https://github.com/junit-team/junit5-samples/blob/r5.5.2/junit5-jupiter-starter-gradle/build.gradle所示,我建议将 Jupiter 依赖项定义为:testImplementation('org.junit.jupiter:junit-jupiter:5.5.2')希望能解决这个问题。
随时随地看视频慕课网APP

相关分类

Java
我要回答