diferencias entre 2 clases de afirmación JUnit

2 minutos de lectura

avatar de usuario
Donal

El marco JUnit contiene 2 Assert clases (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.

  • En Intellij IDEA, puede excluir junit.framework.* desde el menú desplegable de importación estática en Editor->General->Auto Import->Exclude from Import and Completion.

    – jordanpg

    14 de agosto de 2015 a las 14:03

avatar de usuario
Mnementth

El antiguo método (de JUnit 3) consistía en marcar las clases de prueba extendiendo junit.framework.TestCase. que heredó junit.framework.Assert él mismo y su clase de prueba obtuvieron la capacidad de llamar a los métodos de aserción de esta manera.

Desde la versión 4 de JUnit, el marco utiliza Annotations para pruebas de marcado. 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 del nuevo Assert clase. Es por eso que todos los métodos de afirmación en la nueva clase son métodos estáticos. Entonces puedes 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 trasladaron al nuevo paquete. org.junit que sigue mejor las convenciones normales para la nomenclatura de paquetes.

  • Esta respuesta no es del todo correcta, puedes hacer importaciones estáticas de métodos en la clase junit.framework.Assert y org.junit.Assert. Sin embargo, probablemente sea una buena idea apegarse a la clase org.junit.Assert ya que es más nueva, ligeramente reescrita y probablemente pensada como un reemplazo.

    – Glenn Bech

    30 de noviembre de 2015 a las 9:51

avatar de usuario
RenéS

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 para anotaciones.

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

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

En Android Studio (y también en IntelliJ), puede excluir globalmente junit.framework de la propuesta de importación automática.

Puede establecer el alcance entre IDE o Project. Si no tiene proyectos que usen JUnit 3, puede permanecer con seguridad en el ámbito IDE.

Posición de ajuste:

Preferencias -> Editor -> General -> Importación automática

ingrese la descripción de la imagen aquí

avatar de usuario
shyam

Hice una comparación aproximada del código fuente y no hay cambios serios. Se agregaron muchos comentarios en org.junit.Assert y se han hecho algunas refactorizaciones. El único cambio es la comparación con Arrays. Hay algunas limpiezas de código, pero hay (en mi humilde opinión) sin cambio funcional.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad