Gradle不能同时在java和groovy中运行测试

问题描述 投票:1回答:1

我面临一个无法解决的问题。 我的应用程序有以下代码结构。

src
    - main
        - java
    - test
        - java
        - groovy

这是相当传统的。有些测试是在java中用JUnit5写的,有些是在groovy中用Spock写的。gradlew test 只在 /src/test/groovy 是运行。没有错误。Java测试根本没有运行。我特意给srctestjava添加了一个失败的测试,以检查是否有打印报告的问题,测试没有失败,因为整个包srctestjava被忽略了。测试没有失败,因为整个包中的srctestjava不知为何被忽略了。我试图在SO上找到解决方案,但没有一个答案能帮助我。

sourceSets {
  test {
    java { srcDirs = "src/test/java" }
    groovy { srcDirs = "src/test/groovy" }
  }
}

这是一些我的build.gradle中的片段。

插件。

apply plugin: 'groovy'

测试依赖性。

testImplementation("org.springframework.boot:spring-boot-starter-test:2.1.4.RELEASE") {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testImplementation("org.junit.jupiter:junit-jupiter:5.5.2")
testImplementation(group: 'org.spockframework', name: 'spock-core', version: '1.3-groovy-2.5')
testImplementation(group: 'org.spockframework', name: 'spock-spring', version: '1.3-groovy-2.5')
testImplementation(group: 'org.codehaus.groovy', name: 'groovy-all', version: '1.3-groovy-2.5', ext: 'pom')

测试任务配置:

test {
    useJUnit()
    failFast = true
    testLogging.showStandardStreams = true

    reports {
        junitXml.enabled = true
    }
    finalizedBy jacocoTestReport
    finalizedBy jacocoTestCoverageVerification
    finalizedBy check
    testLogging {
        events "PASSED", "STARTED", "FAILED", "SKIPPED"
    }
}

你有什么想法吗?

java gradle groovy junit spock
1个回答
1
投票

好吧,我解决了这个问题,紧接着我又遇到了另一个问题。我把这个答案贴出来,以备将来我或一些同道中人的麻烦。

首先,我必须按照Mike Hill的建议,把useJUnit()改成useJUnitPlatform()。

这样就解决了第一个java测试不能运行的问题。新的问题出现了--junit测试运行极慢,有些测试随机卡住了。每当我运行测试时,其中一个测试就会卡住,并保持这种状态几分钟。在那之后,OutOfMemory被抛出,我不知道为什么。当我在IJ上运行这些测试时,一切都很顺畅。

测试依赖关系。

testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'

同时在测试关闭中添加这个。

test {
    useJUnitPlatform() {
            includeEngines 'junit-vintage'
            includeEngines 'junit-jupiter'
    }
}

我并没有说这是正确的解决方案。更多的是在翻阅文档后的猜测。在没有进一步阅读useJUnit()和useJUnitPlatform()的区别之前,我不建议复制它。对我来说,它做到了,我没有更多的时间做研究。

© www.soinside.com 2019 - 2024. All rights reserved.