2010-03-16 13 views
30

Ho cercato di capire come eseguire test parametrizzati in Junit4 insieme a PowerMock. Il problema è che per usare PowerMock che serve per decorare la vostra classe di test conJunit Test parametrizzati insieme a Powermock - come?

@RunWith(PowerMockRunner.class) 

e di utilizzare i test con parametri dovete decorare con

@RunWith(Parameterized.class) 

Da quello che posso vedere che sembrano esclusi reciprocamente !? È vero? C'è un modo per aggirare questo? Ho provato a creare una classe parametrizzata all'interno di una classe in esecuzione con PowerMock; qualcosa di simile:

@RunWith(PowerMockRunner.class) 
class MyTestClass { 
    @RunWith(Parameterized.class) 
    class ParamTestClass { 
      // Yadayada 
    } 
} 

ma purtroppo questo non fa molto bene ... Il ParamTestClass ancora non viene eseguito con il supporto PowerMock (non che sorprende forse) ... e ho sorta di a corto di idee quindi ogni aiuto è molto apprezzato!

Aggiornamento: Per Googler futuri vedi anche: Using PowerMock without the RunWith?

risposta

0

Non è possibile utilizzare due corridori di classe in una sola volta, in modo da sarà sicuramente di scrivere il proprio test runner per realizzare questo obiettivo.

Non so nulla di Powermock, ma dopo 10 secondi di ricerca, sembra che una soluzione sarebbe scrivere un runner di test che utilizza il caricatore di classi di powermock e esegue test parametrizzati. Se riesci a capire come delegare al corridore di prova parametrizzato dall'interno del tuo runner personalizzato, questa potrebbe essere la soluzione migliore.

+0

Grazie per il suggerimento. Daremo un'occhiata al caricatore di classe di powermock. –

14

Sì, questo funziona utilizzando il PowerMock Rule disponibile se si utilizza JUnit 4.7+.

16

Ho avuto lo stesso problema. Sfortunatamente non mi ha permesso di usare una regola PowerMock a causa della JVM che avevo. Invece della regola ho usato RunnerDelegate.

@RunWith(PowerMockRunner.class) 
@PowerMockRunnerDelegate(Parameterized.class) 
+0

Aveva lo stesso problema JVM, questa soluzione ha funzionato come un fascino. Saluti! –