Gradle Kotlin项目怎么使用JUnit 5运行测试

大宇吖_4935

大宇吖_4935

2026-11-09

417人浏览

原创

Gradle Kotlin项目需显式配置三要素才能运行JUnit 5测试:testImplementation提供API、testRuntimeOnly提供junit-jupiter-engine、tasks.test { useJUnitPlatform() }启用平台;测试类须置于src/test/kotlin且以Test结尾,方法名含空格需用反引号包裹;Android项目还需android-junit5插件及includeAndroidResources=true。

gradle kotlin项目怎么使用junit 5运行测试

Gradle Kotlin项目默认不带JUnit 5运行能力,必须显式声明依赖和启用测试平台——否则./gradlew test会静默跳过所有测试,或者报No tests found。

build.gradle.kts里必须配齐三样东西

只加testImplementation("org.junit.jupiter:junit-jupiter")不够,缺一不可:

  • testImplementation提供注解和断言(如@Test、assertEquals)
  • testRuntimeOnly提供引擎实现(junit-jupiter-engine),没它JUnit Platform就找不到执行器
  • test { useJUnitPlatform() }告诉Gradle用JUnit 5平台发现并运行测试,而不是默认的JUnit 4兼容模式

完整写法示例:

dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter:5.11.2")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.2")
}

tasks.test {
    useJUnitPlatform()
}

Kotlin测试类命名和方法写法有隐含要求

Gradle + JUnit 5 能识别Kotlin测试类,但有两个易被忽略的条件:

  • 测试类必须放在src/test/kotlin下,且文件名以Test结尾(如CalculatorTest.kt),否则useJUnitPlatform()可能扫描不到
  • 测试方法名若含空格或自然语言,必须用反引号包裹:fun `should throw on negative input`();直接写shouldThrowOnNegativeInput也行,但前者可读性高,且不会因Kotlin命名规范被误判为非测试方法
  • 别漏掉import org.junit.jupiter.api.Test——Kotlin不自动导入Jupiter注解,IDE有时会帮你加,但命令行跑./gradlew test时失败往往就卡在这行缺失

Android项目要多加一个插件

普通JVM Kotlin项目到上一步就能跑通,但Android项目额外需要android-junit5插件,因为AGP默认禁用JUnit 5平台:

  • 在build.gradle.kts(Project级)添加插件依赖:classpath("de.mannodermaus.gradle.plugins:android-junit5:1.9.0.0")
  • 在Module级build.gradle.kts中启用:plugins { id("de.mannodermaus.android-junit5") }
  • Android还要求testOptions.unitTests.includeAndroidResources = true才能访问R资源,否则@Test里调用Context.getString()会NPE

常见错误:test任务没输出、IDE能跑但CLI报错

最典型的症状是./gradlew test返回BUILD SUCCESSFUL但零测试执行——根本原因是useJUnitPlatform()没生效,或者引擎jar没进runtime classpath。排查顺序:

  • 运行./gradlew test --info | grep "test platform",确认输出里有Using JUnit Platform launcher
  • 检查./gradlew dependencies --configuration testRuntimeClasspath,确认junit-jupiter-engine出现在列表中
  • 如果用Kotlin DSL,别写testRuntimeOnly("org.junit.jupiter:junit-jupiter:5.11.2")——这个坐标只含API,不含引擎,必须拆成testImplementation + testRuntimeOnly两个条目

真正卡住人的地方,往往不是语法写错,而是testRuntimeOnly漏了、或useJUnitPlatform()写在了错误的tasks作用域里(比如写在tasks.withType外层,没绑定到实际的test任务上)。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Kotlin协程编程与Spring Boot集成实践
Kotlin协程编程与Spring Boot集成实践

本专题围绕 Kotlin 协程机制展开,深入讲解挂起函数、协程作用域、结构化并发与异常处理机制,并结合 Spring Boot 展示协程在后端开发中的实际应用。内容涵盖异步接口设计、数据库调用优化、线程资源管理以及性能调优策略,帮助开发者构建更加简洁高效的 Kotlin 后端服务架构。

2026.02.12

391

18

Java Kotlin协程与异步编程实战
Java Kotlin协程与异步编程实战

本专题围绕 Kotlin 协程与异步编程展开,讲解挂起函数、协程作用域、异步任务调度及并发控制方法。通过实际项目案例,帮助开发者提升后端服务性能,实现高效异步任务处理与稳定性保障。

2026.04.13

179

16

Kotlin Android开发教程大全
Kotlin Android开发教程大全

系统讲解 Google 官方推荐的 Android 开发首选语言 Kotlin 的核心知识与工程实践,涵盖 Kotlin 简洁语法(空安全/数据类/扩展函数/解构声明/作用域函数)与 Java 互操作、集合操作与函数式编程、协程(Coroutines)异步编程(suspend/launch/async/Flow)、Jetpack Compose 声明式 UI 开发(状态管理/组合函数/导航/动画)、MVVM / MVI 架构设计与 Vi

2026.06.03

288

19

软件测试常用工具
软件测试常用工具

软件测试常用工具有Selenium、JUnit、Appium、JMeter、LoadRunner、Postman、TestNG、LoadUI、SoapUI、Cucumber和Robot Framework等等。测试人员可以根据具体的测试需求和技术栈选择适合的工具,提高测试效率和准确性 。

2023.10.13

5130

8

java测试工具有哪些
java测试工具有哪些

java测试工具有JUnit、TestNG、Mockito、Selenium、Apache JMeter和Cucumber。php还给大家带来了java有关的教程,欢迎大家前来学习阅读,希望对大家能有所帮助。

2023.10.23

3541

10

Java 单元测试
Java 单元测试

本专题聚焦 Java 在软件测试与持续集成流程中的实战应用,系统讲解 JUnit 单元测试框架、Mock 数据、集成测试、代码覆盖率分析、Maven 测试配置、CI/CD 流水线搭建(Jenkins、GitHub Actions)等关键内容。通过实战案例(如企业级项目自动化测试、持续交付流程搭建),帮助学习者掌握 Java 项目质量保障与自动化交付的完整体系。

2025.10.24

1226

26

Java Maven/Gradle 构建与依赖管理合集
Java Maven/Gradle 构建与依赖管理合集

系统讲解 Java 项目构建工具的使用与进阶配置,涵盖 Maven 的 POM 文件结构、生命周期(clean/compile/package/install/deploy)与插件机制、依赖范围(compile/provided/test/runtime)与传递依赖管理、多模块聚合与继承、私有 Nexus 仓库发布,以及 Gradle 的 Groovy / Kotlin DSL 语法、Task 自定义与增量构建、依赖版本目录(Versi

2026.05.09

389

25

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

40

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

20

13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Gradle 9 主版本升级指南
Gradle 9 主版本升级指南

共0课时 | 0人学习

Gradle 安全最佳实践
Gradle 安全最佳实践

共0课时 | 0人学习

Gradle 依赖校验手册
Gradle 依赖校验手册

共0课时 | 0人学习