我正在为一个站点编写自动化测试。有一个页面,其中所有商品均已添加到购物车。最大项目数为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/kotlintest,https://yobriefca.se/expect.kt/,https://github.com/winterbe/expekt,https://github.com/MarkusAmshove/Kluent,可能更多。使用它们的测试应该更具可读性,但是我还没有尝试过它们。查看他们的文档和示例,然后选择您喜欢的一个。
关于arrays - 如何在Kotlin中查找哪个元素无法在数组之间进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46546959/