kotlin测试android,使用Kotlin Spek 2来做Android的行为驱动测试
Spek是Kotlin一个很强大的行为驱动测试(behavior-driven testing)的框架。在android里使用spek2,我们可以很容易地定义一个清晰的,可读性高的测试用例。
地址:https://www.spekframework.org/
Spek2是在JUnit 5上运行的一个框架。在使用之前需要安装JUnit5.
安装JUnit 5
打开project级别的build.gradle,添加JUnit 5的仓库以及依赖:repositories {
maven { url "http://dl.bintray.com/jetbrains/spek" }
}
dependencies {
classpath "de.mannodermaus.gradle.plugins:android-junit5:1.5.1.0"
}
接着打开app级别的build.gradle,添加junit 5插件:apply plugin: "de.mannodermaus.android-junit5"
依赖如下:testImplementation "org.junit.jupiter:junit-jupiter-api:5.5.1"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.5.1"
安装Spek 2
在app级别的build.gradle,添加junitPlatform到testOptions中,如下:android {
testOptions {
junitPlatform {
filters {
engines {
include 'spek2'
}
}
}
}
}
接着添加spek2的依赖:testImplementation "org.spekframework.spek2:spek-dsl-jvm:2.0.7"
testImplementation "org.spekframework.spek2:spek-runner-junit5:2.0.7"
添加测试用例
如下是一个简单的数学类以及函数:class Math {
fun multiplication(x: Int, y: Int) = x.times(y)
fun division(x: Int, y: Int) = x.div(y)
}
添加测试用例如下:package com.project.myapplication
import org.junit.jupiter.api.Assertions.assertEquals
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.gherkin.Feature
object MathTest : Spek({
Feature("math") {
val math = Math()
Scenario("do multiplication") {
var a = 0
var b = 0
var multiple = 0
val result = 21
Given("initial a and b") {
a = 3
b = 7
}
When("multiple a with b") {
multiple = math.multiplication(a, b)
}
Then("it should return multiplication between a and b") {
assertEquals(result, multiple)
}
}
Scenario("do division") {
var a = 0
var b = 0
var division = 0
val result = 3
Given("initial a and b") {
a = 21
b = 7
}
When("division a with b") {
division = math.division(a, b)
}
Then("it should return division between a and b") {
assertEquals(result, division)
}
}
}
})
右键选择执行测试用例就可以看到结果了。
说明:
Spek通过GWT (Given When Then)的方式来书写测试用例,或者叫做情景。也就是说GWT分别代表了测试用例的三部分:Given:是测试用例的预设状态,可以认为是此情景下的预置条件。
When:表示行为执行的部分,可以认为执行逻辑的部分
Then:用于描述判断由于指定行为而您期望的更改
Spek通过把情景分为三部分,这样我们就可以很容易定义个基于行为驱动的开发的测试用例,具有很高的可读性。
kotlin测试android,使用Kotlin Spek 2来做Android的行为驱动测试相关推荐
- 【软件测试】资深测试聊一聊,测试架构师是怎么样的,做一名成功的测试工程师......
目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...
- android 翻书动画效果怎么做,android ViewPager实现滑动翻页效果实例代码
实现ViewPager的滑动翻页效果可以使用ViewPager的setPageTransformer方法,如下: import android.content.Context; import andr ...
- 超越Android:Kotlin在后端的工作方式
by Adam Arold 亚当·阿罗德(Adam Arold) 超越Android:Kotlin在后端的工作方式 (Going Beyond Android: how Kotlin works on ...
- 神经网络API、Kotlin支持,那些你必须了解的Android 8.1预览版和Android Studio 3.0新特性
曾仅用 55 秒发布会的 Android 8.0 Oreo 在时隔两个月后,Google 于今天在其官方网站上正式发布了 Android 8.1 首个开发者预览版,此次升级涵盖了针对多个功能的提升优化 ...
- Android Studio kotlin编程实现图片滑动浏览 stepbystep
1 基本介绍 参照 kotlin官网:使用 RecyclerView 显示可滚动列表的 案例实现 功能:采用RecyclerView 空间实现图片和文字的滚动浏览. 在下图显示的序列中,可以看到一个填 ...
- [Android]使用Kotlin开发Android(二)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4829007.html [TOC] 使用Kotlin+OkHtt ...
- 【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )
文章目录 一.创建支持 Kotlin 的 NDK 项目 二.Kotlin 语言中使用 NDK 要点 1.加载动态库 2.声明 ndk 方法 3.Project 下的 build.gradle 配置 4 ...
- android 多结点进度条,Android使用Kotlin实现多节点进度条
时间轴主要使用Recyclerview来实现.开发语言使用Kotlin,代码相对java少了许多也简洁许多 效果图: MainActivity.kt package com.example.lee.l ...
- 用Kotlin开发您的第一个应用程序| Android与Kotlin
In the previous article, we learned how to setup Kotlin in the android studio? Now moving to journey ...
最新文章
- @Bean修饰的方法参数的注入方式
- php插入代码数据库
- python 线程类 threading.Thread.run() 方法
- php静态变量的销毁
- HBase数据迁移到Kafka实战
- Java 多线程异常捕获Runnable实现
- 怎么结束linux里的redis进程,linux 怎么结束redis的monitor命令
- SQL Server 823,824 错误
- Microsoft caffe(caffe-windows) cifar实例编译之model的使用
- php一键环境包xammp 安装 phpDocumentor
- Linux实战教学笔记
- 林期苏曼属性标签编辑_CAD技巧之增强属性编辑器 属性文字
- Java到底能干什么?实事求是地说一下
- 计算机怎么切换到音乐,win10系统如何快速切换到下一首歌曲?
- 挂yy协议的服务器,yy协议挂机软件
- 定义范围中的备选方案生成、横向思维、创建WBS、工作包定义、WBS、确认范围过程和实施质量过程的关系、联合应用设计和质量功能展开QFD...
- Openwrt 15.05.1增加对MT7620a NAND flash的支持
- Java基础-Java概述(第一、二章)
- 怎么判断电脑是32位还是64位呢
- 路径规划算法C++实现(三)--DWA