我有一个应该通过但没有通过的测试,在提出一个展示行为的小测试用例的过程中,我做了一个不应该通过但通过的测试。这是测试:
@Test
fun `should not pass`() {
val key1 = "key1"
val value1 = "value1"
val key2 = "key2"
val value2 = "value2"
val map: Map<String, Collection<Any>> = mapOf(key1 to listOf(value1), key2 to setOf(value2))
assertThat(map.entries).all {
any {
it.all {
prop(Map.Entry<String, Any>::key).isEqualTo(key1) // assert 1
prop(Map.Entry<Any, Collection<Any>>::key).isEqualTo(value1) // assert 2
fail("Expected value", "Actual value") // assert 3
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我打错了assert 2并提取了密钥而不是值。当我意识到这一点时,我无法弄清楚为什么测试仍然通过。所以我加assert 3了强制它失败,但是测试还是通过了!奇怪的是,如果我从地图中删除第二个条目 ( key2and value2),那么测试确实会按预期失败。
我怀疑这可能与嵌套的alls 和 s 有关any …