2009-07-19 19 views
26

Tengo el siguiente caso de prueba en eclipse, usando JUnit 4 que se niega a pasar. ¿Qué podría estar mal?La etiqueta JUnit expected no funciona como se esperaba

@Test(expected = IllegalArgumentException.class) 
public void testIAE() { 
    throw new IllegalArgumentException(); 
} 

Este caso de prueba exacta se produjo cuando se trata de probar mi propio código con la etiqueta de esperar que no funcionó. Quería ver si JUnit pasaría la prueba más básica. No fue así.

También he probado con excepciones personalizadas como se esperaba sin suerte.

Captura de pantalla: Screenshot http://www.freeimagehosting.net/uploads/6a995b0db7.png

+2

Este es realmente extraño, hice algunas pruebas yo mismo, y este código funciona bien (la prueba es exitosa) ... – Torandi

+0

Agregué una captura de pantalla, solo para mostrar ... También sería dudoso. –

Respuesta

71

El problema es que su AnnounceThreadTest extiende TestCase. Debido a que extiende TestCase, JUnit Runner lo está tratando como una prueba JUnit 3.8, y la prueba se está ejecutando porque comienza con la palabra prueba, ocultando el hecho de que la anotación @Test de hecho no se está utilizando en absoluto.

Para solucionar esto, elimine "extends TestCase" de la definición de clase.

+0

Gracias, esto lo solucionó como se anuncia. –

+4

Después de quitar el TestCase extendido, tuve que agregar la importación adicional para asegurarme de que tenía los métodos de afirmación estática. import static org.junit.Assert. *; – burtlo

+6

Impresionante trabajo para encontrar la solución oculta como una pista en una captura de pantalla –

3

acabo de encontrar esto en IntelliJ utilizando JUnit 4.4:

@Test(expected = IllegalArgumentException.class) 
    public void testExpected() 
    { 
     throw new IllegalArgumentException(); 
    } 

Pases perfectamente.

Reconstruya todo su proyecto y vuelva a intentarlo. Hay algo más que estás haciendo mal. JUnit 4.4 está funcionando como se anuncia.

Cuestiones relacionadas