java - example - ¿Qué puede hacer que JUnit ignore las anotaciones de @Ignore?
junit arguments (5)
Asegúrese de que está importando el
@Ignore
correcto. Para estar seguro use@org.junit.Ignore
explícitamente.Verifique si JUnit 4 está ejecutando su prueba, no 3. La forma más fácil de hacer esto es cambiar el nombre de la prueba para que no sea el prefijo de
test
(ahora no debería ejecutarse y JUnit 4 no necesita este prefijo de todos modos) o examine la jerarquía de herencia de su caso de prueba: no debería extenderse directa o indirectamente desdejunit.framework.TestCase
(requisito de Junit 3).
Acabo de usar MyEclipse para generar automáticamente algunos casos de prueba de JUnit. Uno de los métodos generados se ve así:
@Ignore("Ignored") @Test
public void testCreateRevision()
{
fail("Not yet implemented"); // TODO
}
He añadido la anotación @Ignore
manualmente. Sin embargo, cuando ejecuto la prueba, JUnit enumera ese método y otros similares, en "fallas", en lugar de ignorarlos (relacionado: ¿Cuál es la diferencia entre falla y error en JUnit? ). Y muestra el mensaje "Aún no implementado" en lugar del mensaje "Ignorado". Claramente, se debe llamar fail()
, y por lo tanto, la aserción @Ignore
no está funcionando.
¿Que está pasando aqui? ¿Debo habilitar una configuración para que esto funcione?
EDITAR:
Cosas que he considerado / probado hasta ahora:
- Estoy usando JUnit 4, así que no es un problema de versión.
- Estoy importando
org.junit.Ignore
, por lo que no es un caso del uso incorrecto deIgnore
. - He intentado usar
@Ignore
solo,@Ignore @Test
y@Ignore("message") @Test
; todos fallan
EDIT 2:
Creé las pruebas con MyEclipse, a través de New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test
New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test
New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test
y la biblioteca en mi ruta de compilación es JUnit 4. Estoy construyendo con ant y ejecutando el caso con MyEclipse.
¿Estás seguro de que las clases de prueba fueron recompiladas?
Es un problema bastante común, que la recompilación falla porque hubo un error tipográfico en algún lugar de las fuentes (como un punto y coma faltante), y el IDE no le dice que la compilación falló.
Intenta eliminar la carpeta target/test-classes
.
Creo que es solo @Ignore que saltará la prueba.
En mi caso, encontré que mi IDE estaba ejecutando la prueba sin tener en cuenta la anotación @Ignore
. Cuando ejecuté mvn install
(o cualquier otra fase de Maven), la prueba se omitió y eso es lo que realmente buscaba (ver ilustración adjunta).
También tuve este problema a pesar de que JUnit 3 no estaba en mi classpath. Creo que el modo de compatibilidad en Junit 4 recoge el prefijo ''test'' en su nombre de prueba y, por lo tanto, funciona como lo haría JUnit 3 en lugar de recoger el @Ignore. La solución es cambiar el nombre de tu prueba.