断言错误返回各自的列表位置而不是对象?


test("Comparison") {
val list: List[String] = List("Thing", "Entity", "Variable")
val expected: List[String] = List("Thingg", "Entityy", "Variablee")
var expectedPosition = 0
for (item <- list) {
assert(list(expectedPosition) == expected(expectedPosition))
expectedPosition += 1
}
}

在Scala中,为了使我的低级代码测试更具可读性,我认为使用一个断言并让它在循环中迭代并在最后增加累加器将是一个好主意。这是为了在多个输入或多或少具有相似属性时,一次测试多个输入。当断言失败时,它返回为"Thing[]"不等于"事物"[g]。它不是报告列表中失败的项,而是有一种方法可以让它直接声明列表位置,而不需要在断言之前连接列表位置或使用返回列表位置的条件语句?就像我宁愿把它全部包含在assert()错误报告中。

val expected: LazyList[String] = ...
expected.zip(list)
.zipWithIndex
.foreach{case ((exp,itm),idx) =>
assert(exp == itm, s"off at index $idx")
}
//java.lang.AssertionError: assertion failed: off at index 0

expected是惰性的,因此即使压缩了两次,也只遍历一次。

最新更新