¿Cómo encontrar qué elemento no comparó las matrices en Kotlin?

Estoy escribiendo testings automatizadas para un sitio. Hay una página con todos los artículos agregados al carrito. El número máximo de elementos es 58. En lugar de verificar cada elemento uno por uno, decidí crear 2 arrays con strings : 1 con los nombres correctos: String y 1 con los nombres: String que obtuve del sitio. Luego comparo esas 2 matrices con contentEquals . Si esa comparación falla, ¿cómo sé qué elemento causó exactamente la comparación?

Brevemente simple de lo que tengo ahora:

 @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) } } 

Esta testing falla si 2 matrices no son las mismas pero no me muestra los detalles, entonces ¿hay alguna manera de ver más detalles del error, por ejemplo, elemento que no comparó? Gracias.

Recomiendo usar una biblioteca de matcher como Hamcrest o AssertJ en las testings. Proporcionan posts de error mucho mejores para casos como este. En este caso con Hamcrest sería:

 import org.hamcrest.Matchers.* assertThat(getAllElementsNames, contains(*correctElementsNames)) // or just assertThat(getAllElementsNames, contains("name1", "name2", "name3", ...)) 

También hay bibliotecas de coincidencias hechas específicamente para Kotlin: https://github.com/kotlintest/kotlintest , https://yobriefca.se/expect.kt/ , https://github.com/winterbe/expekt , https: / /github.com/MarkusAmshove/Kluent , probablemente más. Las testings que los utilizan deben ser aún más legibles, pero no he probado ninguno de ellos. Mira su documentation y ejemplos, y elige el que más te guste.

Necesitas encontrar la intersección entre las dos collections. Intersección serán los elementos comunes. Después de eliminar la colección de intersecciones de la colección que desea realizar, la testing le proporcionará los elementos complementarios.

 val intersection = getAllElementsNames.intersect(correctElementsNames) getAllElementsNames.removeAll(intersection) 
  • Conceptos básicos de Kotlin: ¿cómo agregar o establecer un elemento de un map?
  • Array Int bidimensional en Kotlin
  • Kotlin: cómo crear una matriz 2D del tipo String
  • Cómo usar la biblioteca kmongo para operador de sector
  • ¿Cómo implementar readLine () !!. ToIntArray () en Kotlin?
  • Método igual para class de datos en kotlin
  • ¿Cómo comparar dos matrices en Kotlin?
  • Cómo escribir Short / Int en buffer de 1 byte
  • Inicialización de Kotlin 2d Array
  • ¿Cómo serializar / deserializar una matriz de objects personalizados en Kotlin?
  • ¿Cómo inicializar una matriz en Kotlin?