Android Studio 依赖 Junit5

本文系作者原创,如需转载请注明出处:https://blog.csdn.net/Turtllor/article/details/82853829

前言:今天 leader 让我学习一下Junit 。在搜索资料的过程中,了解到 Junit 的最新版本是Junit 5,本着“用新不用旧”的原则,我开始了Junit 5的学习之旅。以下为学习心得。

Junit5 User Guide (中文)http://sjyuan.cc/junit5/user-guide-cn/

Junit5 学习心得(一)——  Android Studio 依赖 Junit5

第一步依赖就给我来了个下马威。

官方文档介绍依赖有两种方式,分别是 gradle 和  maven 。以前没用过 maven 方式,所以照例用 gradle 。但是文档并没有直接写依赖地址。只有翻看官方的demo,在工程gradle中,终于找到了:

 testCompile('org.junit.jupiter:junit-jupiter-params:5.3.1')
 testRuntime('org.junit.jupiter:junit-jupiter-engine:5.3.1')

然而官方文档中:

JUnit 5跟以前的JUnit版本不一样,它由几大不同的模块组成,这些模块分别来自三个不同的子项目。

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

明明是三个模块啊,为啥只有两个模块的依赖地址呢?先试一下吧!

将上面两句依赖地址,填写到 app 的 gradle 中, “testCompile” 替换成 “textImplementation” , “testRuntime” 替换成 “testRuntimeOnly”,编译通过,万事大吉。

然而,问题又出现了 —— 运行一个编写完成的简单的测试用例时报错:

 

 

本文系作者原创,如需转载请注明出处:https://blog.csdn.net/Turtllor/article/details/82853829

分析问题 —— 哪里缺少补哪里:

在这里引用一张官网的“依赖关系图”:

可以看到“Runner” 这个类,在pathform 模块中。

文档中也提到过。

JUnit Platform是在JVM上 启动测试框架 的基础平台。它还定义了 TestEngine API,该API可用于开发在平台上运行的测试框架。此外,平台还提供了一个从命令行或者 Gradle 和 Maven 插件来启动的 控制台启动器 ,它就好比一个 基于JUnit 4的Runner 在平台上运行任何TestEngine

果然是在这里没错了。那么怎么添加Junit Pathform 的依赖呢?

本文系作者原创,如需转载请注明出处:https://blog.csdn.net/Turtllor/article/details/82853829

其实 ,Gradle 4.6 及以后版本,对Junit5 提供了原生的支持。所以,如果想更好的使用 Junit 5 ,建议将项目的 gradle 版本升级至 4.6 以上。

需要支持 JUnit Platform,那么在 gradle 文件中添加:

test {
    useJUnitPlatform()
}

当然,JUnit Jupiter 的依赖地址长这样:

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.0'
}

你以为这样就结束了吗?

并没有!

Could not find method test() for arguments [build_bqe1zix2ee9lpkapiav6dpsdv$_run_closure5@394784ac] on project ':app' of type org.gradle.api.Project.
Open File

编译是报错,提示找不到 test 的方法!

求助同事,登录谷歌开发者网站,下列文字赫然入目,让我不由心灰:

测试支持库功能

Android 测试支持库包括以下自动化测试工具:

  • AndroidJUnitRunner:适用于 Android 且与 JUnit 4 兼容的测试运行器
  • Espresso:UI 测试框架;适合应用中的功能性 UI 测试
  • UI Automator:UI 测试框架;适合跨系统和已安装应用的跨应用功能性 UI 测试

换言之,目前Android 不支持Junit 5,遂放弃,改学 Junit4。

你可能感兴趣的:(Android Studio 依赖 Junit5)