diferencias entre 2 clases JUnit Assert


El framework JUnit contiene 2 Assert clases (en paquetes diferentes, 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.

Author: Dónal, 2008-11-14

5 answers

El antiguo método (de JUnit 3) era marcar las clases de prueba extendiendo junit.framework.TestCase. Eso heredó junit.framework.Assert y su clase de prueba ganó la capacidad de llamar a los métodos assert de esta manera.

Desde la versión 4 de JUnit, el framework usa Annotations para marcar pruebas. Así que ya no necesitas 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 en la nueva clase son métodos estáticos. Así que puede importarlo de esta manera:

import static org.junit.Assert.*;

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

En el rediseño también se movieron al nuevo paquete org.junit que sigue mejor las convenciones normales para nombrar paquetes.

 230
Author: Mnementh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-23 11:23:38

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.

 72
Author: ReneS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-10 13:20:02

De hecho, hay un cambio funcional: org.junit.Assert se quejará si usa el argumento de dos assertEquals() con float o double, mientras que junit.framework.Assert lo autoboxe silenciosamente.

 17
Author: David Moles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-31 08:56:47

Creo que están refactorizando de junit.framework a org.junit y junit.framework.Assert se mantiene para la compatibilidad hacia atrás.

 5
Author: sblundy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-14 19:00:35

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 (en mi humilde opinión) ningún cambio funcional.

 3
Author: guerda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-23 10:52:50