El marco JUnit contiene 2 Assertclases (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.Asserty 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.Assertsí 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
Annotationspara 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 nuevaAssertclase. 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.junitque sigue mejor las convenciones normales para nombrar paquetes.fuente
JUnit 3.X:
junit.framework.AssertJUnit 4.X:
org.junit.AssertPrefiere 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.Assertse quejará si usa los dos argumentosassertEquals()confloatodouble, mientras quejunit.framework.Assertlo silenciará automáticamente.fuente
Creo que están refactorizando de
junit.frameworkaorg.junityjunit.framework.Assertse 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.Asserty 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.frameworkde la propuesta de importación automática.Puede establecer el alcance entre
IDEoProject. Si no tiene proyectos que usen JUnit 3, puede permanecer con seguridad con el alcance IDE.Posición de ajuste:
fuente