Saltar al contenido

Pruebe las excepciones esperadas en Kotlin

Solución:

La traducción de Kotlin del ejemplo de Java para JUnit 4.12 es:

@Test(expected = ArithmeticException::class)
fun omg() {
    val blackHole = 1 / 0
}

Sin embargo, JUnit 4.13 introdujo dos assertThrows métodos para ámbitos de excepción más detallados:

@Test
fun omg() {
    // ...
    assertThrows(ArithmeticException::class.java) {
        val blackHole = 1 / 0
    }
    // ...
}

Ambos assertThrows Los métodos devuelven la excepción esperada para aserciones adicionales:

@Test
fun omg() {
    // ...
    val exception = assertThrows(ArithmeticException::class.java) {
        val blackHole = 1 / 0
    }
    assertEquals("/ by zero", exception.message)
    // ...
}

Kotlin tiene su propio paquete de ayuda de prueba que puede ayudar a realizar este tipo de prueba unitaria.

Su prueba puede ser muy expresiva con el uso. assertFailWith:

@Test
fun test_arithmethic() {
    assertFailsWith<ArithmeticException> {
        omg()
    }
}

Puedes usar @Test(expected = ArithmeticException::class) o incluso mejor uno de los métodos de la biblioteca de Kotlin como failsWith().

Puede acortarlo aún más mediante el uso de genéricos reificados y un método auxiliar como este:

inline fun <reified T : Throwable> failsWithX(noinline block: () -> Any) {
    kotlin.test.failsWith(javaClass<T>(), block)
}

Y ejemplo usando la anotación:

@Test(expected = ArithmeticException::class)
fun omg() {

}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *