Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing kotlinlang.org的这个代码片段中的测试(0)是什么?_Unit Testing_Testing_Kotlin - Fatal编程技术网

Unit testing kotlinlang.org的这个代码片段中的测试(0)是什么?

Unit testing kotlinlang.org的这个代码片段中的测试(0)是什么?,unit-testing,testing,kotlin,Unit Testing,Testing,Kotlin,我试图解决KotlinKoans页面中的“运行”问题 这是我的实现 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

我试图解决KotlinKoans页面中的“运行”问题

这是我的实现

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)}")
}
下面是针对实现运行的测试套件

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到多个整数。因此,对测试(0)的调用期望值为0,数据为空的vararg列表

然后,对runs(data)的调用只返回1,因为列表为空,for循环没有可循环的内容


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

好的,谢谢!因此,这里0是期望值,它传递一个空数组,顶部有一个更正:如果(a.isEmpty())返回0,则它通过了所有测试