trabajo teoria psicologia practicos persona para niƱos ejemplos asertividad asertiva java unit-testing junit junit4 assert

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.