2009-03-28 12 views
6

Ho codifica test in Junit4 con la Primavera, e ho ottenuto questo comportamento divertente:Junit4 + 2,5 Primavera: afferma semplicemente buttare "NoClassDefFoundError"

Se i miei test sono di passaggio in questo modo, è tutto a posto:

@Test 
public void truthTest(){ 

    assertTrue(true); //Ok 

} 

Ma, se il mio test non riesce:

@Test 
public void truthTest(){ 

    assertTrue(false); //ERROR 

} 

Poi, invece di un fallimento del test ricevo una traccia dello stack brutta e criptico, This is it:

http://pastie.org/429912

Ci scusiamo per questa brutta discarica, ma il suo l'unico dato che ho avuto modo di spiegare il problema (I "pastied" per migliorare la leggibilità)

Sono davvero perplesso, qualcuno ha incontrato questo tipo di problema prima? Grazie in anticipo!

+0

Ecco la mia soluzione in un thread correlato http://stackoverflow.com/a/26029170/206622 –

risposta

11

http://jira.springframework.org/browse/SPR-5145

E è un problema noto con molla test 2.5.x. È incompatibile con JUnit 4.5. Utilizzare 4.0-4.4.

Oppure puoi provare la patch nel tracker dei problemi.

+1

Su un un po 'una nota a margine: (a partire da ora), la soluzione è "Se stai usando 4.0-4.4, prova 4.5 Se stai usando 4.5, prova 4.0-4.4". Ho appena avuto lo stesso problema e l'ho risolto con l'aggiornamento a 4.5. – cwallenpoole

0

Cosa succede se hai importato AssumptionViolatedException nella tua classe di test?

Sembra che non riesca a trovare la classe per generare l'eccezione appropriata.

+0

ho importato org.junit.internals.AssumptionViolatedException ma doesnt lavoro sia –

1

Ho avuto lo stesso problema quando ho scritto i miei test Spring JUnit. Come un sacco di posti disponibili on-line, ci sono solo due alternative

1) rimanere aggiornati con la versione primavera e utilizzare l'ultima versione di JUnit o 2) Lascia la versione Primavera corrente e utilizzare JUnit versione 4.4 o Di meno.

Ho scelto l'opzione n. 2 in cui abbiamo lasciato la versione Spring a 2.5 e scaricato JUnit 4.4. Dopo tutto, tutto ha funzionato.

Un altro punto da tenere presente è che se il progetto in questione, ad esempio il progetto A in cui si scrivono i test ha una dipendenza da un altro progetto B con un'altra versione di Spring, si otterrebbe un errore simile. L'ho imparato nel modo più duro.

-Prashanth