unit-testing - kotlinlang.org 的这段代码片段中的 test(0) 是什么?

标签 unit-testing testing kotlin

我正在尝试解决 KotlinKoans 页面 here 中的“运行”问题

这是我的实现

package runs

fun runs(a: IntArray): Int {
    var numberOfRuns = 1;

    for (index in 0..a.size-2) {
        if (a[index+1] != a[index]) numberOfRuns++
    }

    return numberOfRuns
}

这是针对实现运行的测试套件

class Tests {

    @Test fun testRuns1() {
        test(0)
    }

    @Test fun testRuns2() {
        test(1, 1)
    }

    @Test fun testRuns3() {
        test(3, 1, 2, 3)
    }

    @Test fun testRuns4() {
        test(3, 1, 2, 2, 3)
    }

    @Test fun testRuns5() {
        test(3, 1, 1, 2, 3)
    }

    @Test fun testRuns6() {
        test(1, 1, 1, 1, 1)
    }

    @Test fun testRuns7() {
        test(3, 1, 1, 1, 0, 1, 1)
    }

    @Test fun testRuns8() {
        test(3, 1, 1, 1, 0, 1)
    }

    @Test fun testRuns9() {
        test(5, 1, 0, 1, 0, 1)
    }
}

fun test(expected: Int, vararg data: Int) {
    assertEquals(expected, runs(data), "\ndata = ${Arrays.toString(data)}")
}

除了 testRuns1() 之外的所有测试都通过,我不明白 test(0) 的作用,因为 test() 函数接受两个参数作为输入:预期值和实际值。我错过了什么?

最佳答案

test 的第二个参数是一个 vararg,这意味着它可以接受 0 到多个整数。因此,对 test(0) 的调用预期 = 0 并且 data = 一个空的可变参数列表。

对 running(data) 的调用仅返回 1,因为列表为空并且 for 循环没有任何内容可循环。

编辑:虽然现在我想起来了。这意味着这个测试将会失败,因为它断言预期的运行次数应该为 0,但据我所知,它会返回 1。

关于unit-testing - kotlinlang.org 的这段代码片段中的 test(0) 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45631733/

相关文章:

android - 滑动 Java.lang.IllegalStateException : Cannot obtain size for recycled Bitmap: android. graphics.Bitmap@a4f3bcf[896x157] ARGB_8888

javascript - 如何测试默认导出的js文件?

scala - Specs2 顺序关键字

java - 将 Java 类转换为 Kotlin

android - 没有足够的信息来推断类型变量 T

selenium - 如何在 Qmetry 自动化框架(QAF)中放置检查点

javascript - 如何对依赖于 Promise 的 AngularJS Controller 进行单元测试?

android - 单元测试 : NoSuchMethodError while calling Notification. setLatestEventInfo()

python - 定时 Nose 测试未正确失败

html - 有测试网站吗?