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)