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
.
junit.framework.*
del menú desplegable de importación estática enEditor->General->Auto Import->Exclude from Import and Completion
.Respuestas:
El antiguo método (de JUnit 3) era marcar las clases de prueba extendiéndolas
junit.framework.TestCase
. Eso se heredó ajunit.framework.Assert
sí mismo y su clase de prueba ganó la capacidad de llamar a los métodos de aserción de esta manera.Desde la versión 4 de JUnit, el marco se utiliza
Annotations
para marcar pruebas. Entonces ya no necesitas extenderTestCase
. Pero eso significa que los métodos de afirmación no están disponibles. Pero puede hacer una importación estática de la nuevaAssert
clase. Es por eso que todos los métodos de aserción en la nueva clase son métodos estáticos. Para que pueda importarlo de esta manera: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 nombrar paquetes.fuente
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.
fuente
De hecho, hay un cambio funcional:
org.junit.Assert
se quejará si usa los dos argumentosassertEquals()
confloat
odouble
, mientras quejunit.framework.Assert
lo silenciará automáticamente.fuente
Creo que están refactorizando de
junit.framework
aorg.junit
yjunit.framework.Assert
se mantiene por compatibilidad con versiones anteriores.fuente
Hice una comparación aproximada del código fuente y no hay cambios serios. Se agregaron muchos comentarios
org.junit.Assert
y se realizaron algunas refactorizaciones. El único cambio es la comparación conArrays
. Hay algunas limpiezas de código, pero (en mi humilde opinión) no hay cambio funcional .fuente
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
oProject
. Si no tiene proyectos que usen JUnit 3, puede permanecer con seguridad con el alcance IDE.Posición de ajuste:
fuente