You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle运行test任务不执行ScalaTest测试且测试数为0如何解决

问题根源

你当前配置启用了JUnit Platform执行测试,但缺少ScalaTest对接JUnit Platform的运行器依赖,同时存在Scala主版本跨版本依赖冲突、依赖配置过时的问题,导致Gradle无法识别ScalaTest测试用例。

调整步骤

  1. 统一Scala版本依赖,消除跨版本冲突
    将所有后缀为_2.11的依赖改为_2.12,避免Scala 2.11和2.12版本混用的兼容性问题,同时将所有废弃的compile、testCompile配置替换为官方推荐的implementation、testImplementation,保证依赖传递逻辑正确:
// 替换原来的两个跨版本依赖
implementation('com.typesafe.scala-logging:scala-logging-slf4j_2.12:2.1.2')
implementation('org.json4s:json4s-jackson_2.12:3.7.0-M4')
  1. 添加ScalaTest JUnit运行器依赖
    在dependencies块中添加ScalaTest对接JUnit Platform的运行器依赖,这样JUnit Platform才能识别ScalaTest的测试用例:
testRuntimeOnly 'org.scalatest:scalatest-junit-runner_2.12:3.2.0'
  1. 补充test任务的测试类匹配规则(可选,针对非标准命名的测试类)
    如果你的测试类没有遵循默认的*Test、*Spec等命名规则,可以在test块中显式指定测试类匹配规则:
test {
    useJUnitPlatform()
    // 显式包含ScalaTest常用的测试类命名格式
    include('**/*Test.class', '**/*Spec.class', '**/*Suite.class')
    testLogging {
        events "passed", "skipped", "failed"
    }
}

额外确认:请确保你的Scala测试用例都放在src/test/scala目录下,遵循Gradle Scala插件默认的源码目录规范

修改后完整核心配置参考

plugins {
    id "maven-publish"
    id "scala"
    id 'java'
    id 'jacoco'
}
ext {
    scalaVersion = "2.12.10" // 请和你项目实际使用的Scala版本保持一致
    scalaBinaryVersion = "2.12"
}
scala {
    zincVersion = "1.2.1"
}

repositories {
    mavenLocal()
    jcenter()
    mavenCentral()
    maven {
        url 'http://conjars.org/repo'
    }
}
dependencies {
    implementation "org.scala-lang:scala-library:${scalaVersion}"
    implementation "org.scala-lang:scala-reflect:${scalaVersion}"
    implementation "org.scala-lang:scala-compiler:${scalaVersion}"
    implementation('org.apache.spark:spark-core_2.12:2.4.6')
    implementation('org.apache.spark:spark-sql_2.12:2.4.6')
    implementation('com.typesafe.scala-logging:scala-logging-slf4j_2.12:2.1.2')
    implementation('ch.hsr:geohash:1.3.0')
    implementation('joda-time:joda-time:2.3')
    implementation('org.json4s:json4s-jackson_2.12:3.7.0-M4')
    implementation('org.apache.httpcomponents:httpclient:4.5.6')
    implementation('com.fasterxml.jackson.datatype:jackson-datatype-joda:2.5.1')
    implementation 'com.typesafe:config:1.4.1'
    implementation 'com.google.guava:guava:29.0-jre'
    implementation 'org.scala-lang.modules:scala-xml_2.12:1.2.0'

    testImplementation 'junit:junit:4.12'
    testImplementation 'org.scalatest:scalatest_2.12:3.2.0'
    testRuntimeOnly 'org.scalatest:scalatest-junit-runner_2.12:3.2.0'
    testImplementation ("org.mockito:mockito-scala_2.12:1.16.42")
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.4.2")
    testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.7.0")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.4.2")
    testImplementation group: 'com.holdenkarau', name: 'spark-testing-base_2.12', version: '2.4.5_1.0.0'
}
test {
    useJUnitPlatform()
    include('**/*Test.class', '**/*Spec.class', '**/*Suite.class')
    testLogging {
        events "passed", "skipped", "failed"
    }
}

修改完成后执行./gradlew clean test即可看到ScalaTest用例被正常执行。

内容的提问来源于stack exchange,提问作者Manu Chaudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:36:00