最近开始学习Kotlin,将之前的一个验证证书的题目里全部改成用Kotlin来写,其中有使用到单元测试,故在这里对Kotlin进行单元测试的配置进行记录。
首先build.gradle里添加单元测试依赖:
apply plugin: 'kotlin-android'
android {
sourceSets {
//这里主要是添加存放kotlin的测试文件夹,不然我们在test里创建kotlin文件夹是没什么效果的
test.java.srcDirs += 'src/test/kotlin'
}
}
dependencies {
testCompile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}
接着在test文件夹下创建kotlin文件夹:
注意kotlin文件夹下还要建项目包名和main/java下的包名相同,比如项目代码在main/java/com/cui/example那么kotlin文件夹下需要创建com.cui.example文件夹,否则在生成测试代码时不能弹窗。
然后在main中项目代码中写一个工具类CalculatorTest:
class Calculator {
fun sum(a:Double,b:Double):Double{
return a + b
}
}
选中代码(不选中点击test后不弹窗),点击右键:
出现如下弹框:
弹出如下窗口,这里可以选择需要测试的接口,以及选择是否生成setUp和tearDown方法,setUp会在测试启动的时候被调用,tearDown会在测试结束的时候被调用
点击OK,然后选择src/test目录:
就会自动在kotlin相应包名下生成测试类:
自动生成的代码如下:
class CalculatorTest : TestCase() {
public override fun setUp() {
super.setUp()
}
public override fun tearDown() {}
fun testSum() {}
}
我们将自动生成的CalculatorTest.kt稍做修改,如下:
class CalculatorTest : TestCase() {
var calculator: Calculator? = null
public override fun setUp() {
System.out.println("setUp")
calculator = Calculator()
}
public override fun tearDown() {
System.out.println("tearDown")
}
fun testSum() {
assertEquals(2.0, calculator?.sum(1.0,1.0)?:1.0, 0.0)
}
}
现在我们可以开始进行测试了,右键CalculatorTest.kt:
点击Run ‘CalculatorTest’,可以看到如下结果,代表测试通过了:
现在我们修改一下sum方法,如下:
fun testSum() {
assertEquals(1.0, calculator?.sum(1.0,1.0)?:1.0, 0.0)
}
再次run,结果如下:
测试方法和java方法测试参考:https://blog.csdn.net/u013254166/article/details/80612127