科特林,如何测试(INT)阵列
问题描述:
我想找到一个很好的和简洁的方式来测试intarray科特林,如何测试(INT)阵列
起初我试过
mFaces[0].mIndices shouldBe intArrayOf(0, 1, 2)
其中mIndices
是
var mIndices: IntArray = IntArray(0)
但是失败。的IntelliJ还建议我与Array
小号
然后我想尝试这样的事情
mFaces[0].mIndices.all { it. == index } shouldBe true
覆盖equals()
,但它看起来像有没有方法来检索内部all{..}
的it
指数或者是这个
var p = 0
mFaces[0].mIndices.all { it == p++ } shouldBe true
唯一的可能性?
答
在Java(Kotlin)阵列中,按内容比较而不是。那意味着intArrayOf(1, 2, 3) != intArrayOf(1, 2, 3)
。
比较阵列的内容,你有两个选择:
-
使用深层比较:
Arrays.deepequals(mFaces[0].mIndices, intArrayOf(0, 1, 2))
-
使用列表:
mFaces[0].mIndices.toList() == listOf(0, 1, 2)
+0
严格地说,equals运算符调用方法equals()(这是迄今为止的Kotlin),在数组的情况下恰好被实现为参考比较(这是Java的错误)。 –
你能告诉我们mIndices的声明吗? – miensol
可能的重复:http://*.com/q/35272761/3255152 – mfulton26