¿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) 
  • Kotlin sorting array de una class basada en una var dentro de la class
  • ¿Cómo convertir una list borrada por types a una matriz en Kotlin?
  • Kotlin - Cómo convertir String a ByteArray
  • Cómo usar la biblioteca kmongo para operador de sector
  • Conceptos básicos de Kotlin: ¿cómo agregar o establecer un elemento de un map?
  • ¿Cómo crear una matriz vacía en kotlin?
  • ¿Cómo verificar si una matriz de cadenas está orderada en order alfabético o no utiliza Kotlin?
  • Función Kotlin Array init
  • Inicialización de matriz de subprocesss múltiples en Kotlin
  • Inicializar ArrayList <ArrayList <Int >> con un tamaño en kotlin
  • Kotlin: cómo crear una matriz 2D del tipo String