diferencias entre 2 clases JUnit Assert

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é es esto?

Las clases a las que me refiero son: junit.framework.Assert y org.junit.Assert .

El método anterior (de JUnit 3) era marcar las clases de prueba extendiendo junit.framework.TestCase . Ese junit.framework.Assert heredado.Asegúrate y tu clase de prueba adquirió la capacidad de invocar los métodos assert de esta forma.

Desde la versión 4 de JUnit, el marco utiliza Annotations para las pruebas de marcado. Entonces ya no necesita extender TestCase . Pero eso significa que los métodos assert no están disponibles. Pero puede hacer una importación estática de la nueva clase Assert . Es por eso que todos los métodos assert de la nueva clase son métodos estáticos. Para que pueda importarlo de esta manera:

 import static org.junit.Assert.*; 

Después de esta importación estática, puede usar este método sin prefijo.

En el rediseño, también pasaron al nuevo paquete org.junit que sigue mejor las convenciones normales para el nombre de paquetes.

JUnit 3.X: junit.framework.Assert

JUnit 4.X: org.junit.Assert

Prefiera la más nueva, especialmente cuando se ejecuta JDK5 y superior con soporte de anotación.

De hecho, hay un cambio funcional: org.junit.Assert se quejará si usa los dos argumentos assertEquals() con float o double , mientras que junit.framework.Assert lo silenciará automáticamente.

Creo que se están junit.framework desde junit.framework a org.junit y junit.framework.Assert se mantiene por compatibilidad con versiones anteriores.

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 no hay ( ningún ) cambio funcional .