Cuando miro los ejemplos en la clase Assert JavaDoc
assertThat("Help! Integers don't work", 0, is(1)); // fails:
// failure message:
// Help! Integers don't work
// expected: is <1>
// got value: <0>
assertThat("Zero is one", 0, is(not(1))) // passes
No veo una gran ventaja sobre, digamos, assertEquals( 0, 1 )
.
Quizás sea bueno para los mensajes si las construcciones se vuelven más complicadas, pero ¿ves más ventajas? ¿Legibilidad?
assertTrue
con un&&
. Separarlo en dos condiciones hace que el problema sea obvio incluso en JUnit. No me malinterpretes; Estoy de acuerdo contigo, simplemente no me gusta tu ejemplo.Las notas de la versión de JUnit para la versión 4.4 (donde se introdujo) establecen cuatro ventajas:
Argumento más detallado del tipo que creó la nueva sintaxis: aquí .
fuente
Básicamente para aumentar la legibilidad del código .
Además de Hamcrest, también puedes usar las afirmaciones festivas . Tienen algunas ventajas sobre Hamcrest como:
(
assertEquals(123, actual); // reads "assert equals 123 is actual"
vsassertThat(actual).isEqualTo(123); // reads "assert that actual is equal to 123")
Algunos ejemplos
17 de octubre de 2016 Actualización
Fest ya no está activo, use AssertJ en su lugar.
fuente
Una justificación muy básica es que es difícil estropear la nueva sintaxis.
Suponga que un valor particular, foo, debería ser 1 después de una prueba.
--O--
Con el primer enfoque, es muy fácil olvidar el orden correcto y escribirlo al revés. Entonces, en lugar de decir que la prueba falló porque esperaba 1 y obtuvo 2, el mensaje es al revés. No es un problema cuando la prueba pasa, pero puede generar confusión cuando la prueba falla.
Con la segunda versión, es casi imposible cometer este error.
fuente
Ejemplo:
por cierto: también puedes escribir texto en afirmar XXX ...
fuente
assertThat
caso, porque el mensaje que recibe automáticamente es igual de informativo: "Esperado: (un valor mayor que <1> y un valor menor que <3>)"Está cerca del lenguaje natural.
Lectura más fácil, análisis de código más fácil. El programador pasa más tiempo analizando el código que escribiendo uno nuevo. Entonces, si el código será fácil de analizar, entonces el desarrollador debería ser más productivo.
El código PS debe ser un libro bien escrito. Código auto documentado.
fuente
Hay ventajas para afirmar que por aserción iguales -
1) más legible
2) más información sobre la falla
3) errores de tiempo de compilación - en lugar de errores de tiempo de ejecución
4) flexibilidad con condiciones de prueba de escritura
5) portátil - si está utilizando Hamcrest - puede usar jUnit o TestNG como el marco subyacente.
fuente