java - teoria - diferencias entre 2 clases de asertivo JUnit
persona asertiva (5)
El marco JUnit contiene 2 clases Assert
(en diferentes paquetes, obviamente) y los métodos en cada uno parecen ser muy similares. ¿Alguien puede explicar por qué esto es?
Las clases a las que me refiero son: junit.framework.Assert
y org.junit.Assert
.
Creo que están refactorizando de junit.framework
a org.junit
y junit.framework.Assert
se mantiene por compatibilidad con versiones anteriores.
De hecho, hay un cambio funcional: org.junit.Assert
se quejará si utiliza el assertEquals()
dos argumentos con float
o double
, mientras que junit.framework.Assert
guardará en silencio.
El método antiguo (de JUnit 3) era marcar las clases de prueba extendiendo junit.framework.TestCase
. Eso heredó junit.framework.Assert
y su clase de prueba obtuvo la capacidad de llamar a los métodos de junit.framework.Assert
esta manera.
Desde la versión 4 de JUnit, el marco usa Annotations
para marcar pruebas. Así que ya no necesitas extender TestCase
. Pero eso significa que los métodos de afirmación no están disponibles. Pero puedes hacer una importación estática de la nueva clase Assert
. Es por eso que todos los métodos de afirmación en la nueva clase son métodos estáticos. Así que puedes importarlo de esta manera:
import static org.junit.Assert.*;
Después de esta importación estática, puede utilizar estos métodos sin prefijo.
En el rediseño, también se trasladaron al nuevo paquete org.junit
que sigue mejor las convenciones normales para la denominación de paquetes.
Hice una comparación aproximada del código fuente y no hay cambios serios. Se agregaron muchos comentarios en org.junit.Assert
y se realizaron algunas refactorizaciones. El único cambio es la comparación con Arrays
. Hay algunas limpiezas de código, pero (imho) no hay ningún cambio funcional .
JUnit 3.X: junit.framework.Assert
JUnit 4.X: org.junit.Assert
Prefiere el más nuevo, especialmente cuando se ejecuta JDK5 y superior con soporte de anotación.