arrays - 如何在Kotlin中查找哪个元素无法在数组之间进行比较?

标签 arrays kotlin

我正在为一个站点编写自动化测试。有一个页面,其中所有商品均已添加到购物车。最大项目数为58。我决定不逐一验证每个元素,而是决定创建2个arrays,其中填充了strings:1个正确的名称:String和1个名称:String我是从网站上获得的。然后,我将这两个数组与contentEquals进行比较。
如果该比较失败,我如何知道确切导致比较失败的元素?

我现在拥有的简短内容:

@Test
fun verifyNamesOfAddedItems () {

val getAllElementsNames = arrayOf(materials.text, element2.text, 
element3.text...) 
val correctElementsNames = arrayOf("name1", "name2", "name3"...)
val areArraysEqual = getAllElementsNames contentEquals correctElementsNames
if (!areArraysEqual) {
    assert(false)
} else {
    assert(true)
}

}

如果2个数组不相同,但此测试失败,但没有向我显示详细信息,因此有办法查看更多失败详细信息,例如比较失败的元素?
谢谢。

最佳答案

我建议在测试中使用匹配器库,例如Hamcrest或AssertJ。对于此类情况,它们提供了更好的错误消息。在这种情况下,Hamcrest可能是:

import org.hamcrest.Matchers.*

assertThat(getAllElementsNames, contains(*correctElementsNames))

// or just
assertThat(getAllElementsNames, contains("name1", "name2", "name3", ...))

还有一些专门针对Kotlin的匹配器库:https://github.com/kotlintest/kotlintesthttps://yobriefca.se/expect.kt/https://github.com/winterbe/expekthttps://github.com/MarkusAmshove/Kluent,可能更多。使用它们的测试应该更具可读性,但是我还没有尝试过它们。查看他们的文档和示例,然后选择您喜欢的一个。

关于arrays - 如何在Kotlin中查找哪个元素无法在数组之间进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46546959/

相关文章:

java - 确保不调用特定方法的自定义 lint 规则

c++ - 如何将元素添加到 C++ 数组?

javascript - hoek (hapijs) transform() 是否处理数组?

php - 在循环内将数组数据更新到数据库

java - Kotlin 中的通用转换

asynchronous - 如何 : fire and forget async coroutines in Kotlin

c - 如果数组仅使用列值定义,则当数组超出时没有错误,没有警告

c++ - 复制指针值c++

android - RxJava 将 Single 与 Completable 结合起来

android - 嵌套导航时,导航的返回堆栈丢失