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