Gradle在其他来源集中找不到测试

时间:2019-09-22 02:39:52

标签: java gradle junit5 source-sets

我的目标是为集成测试建立一个源集。我创建了一个名为“ intTest”的源集。我在里面做了一个简单的测试:

package com.github.frozensync;

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

import static org.junit.jupiter.api.Assertions.assertEquals;

class Application {

    @Test
    @DisplayName("should work")
    void foo() {
        assertEquals(2, 2);
    }
}

当我尝试运行它时,出现以下错误:

  

失败:构建失败,并出现异常。
  *出了什么问题:
  任务':integrationTest'的执行失败。
  >未找到给定的测试,包括:[com.github.frozensync.Application](filter.includeTestsMatching)
  *试试:
  使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。与--scan一起运行以获得完整的见解。
  *在https://help.gradle.org上获得更多帮助
  在0毫秒内建立失败

这是我的项目结构:
project structure

这是我的build.gradle

plugins {
    id 'java'
}

group 'com.github.frozensync'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

sourceSets {
    intTest {
        compileClasspath += sourceSets.main.output
        runtimeClasspath += sourceSets.main.output
    }
}

idea {
    module {
        testSourceDirs += sourceSets.intTest.java.srcDirs
        testResourceDirs += sourceSets.intTest.resources.srcDirs
    }
}

configurations {
    intTestImplementation.extendsFrom implementation
    intTestRuntimeOnly.extendsFrom runtimeOnly
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.5.2'
    intTestImplementation 'org.junit.jupiter:junit-jupiter:5.5.2'
}

test {
    useJUnitPlatform()
}

task integrationTest(type: Test) {
    description = 'Runs integration tests.'
    group = 'verification'

    testClassesDirs = sourceSets.intTest.output.classesDirs
    classpath = sourceSets.intTest.runtimeClasspath
    shouldRunAfter test
}

check.dependsOn integrationTest

我遵循了guide by Gradle。遇到此问题时,我尝试了以下操作:
-运行./gradlew cleanIntegrationTest integrationTest绕过IntelliJ,但仍进行了0次测试
-添加the idea Gradle plugin
-从this中添加dependsOn
-this的解决方案。

如何启用Gradle来发现源集“ intTest”中的测试?

1 个答案:

答案 0 :(得分:3)

您的测试是JUnit 5测试,但是您没有告诉Gradle。就像测试任务一样,您需要致电

useJUnitPlatform()

在您的integrationTest任务的配置中。