2011-10-27 10 views
9

Volevo creare un'annotazione JUnit personalizzata, qualcosa di simile al tag previsto in @Test, ma voglio anche controllare il messaggio di annotazione.JUnità annotazione personalizzata

Qualche suggerimento su come farlo, o forse c'è qualcosa pronto?

risposta

4

JUnit 4.9 ha rafforzato l'uso da parte della biblioteca di "regole" per i test, che a mio avviso potrebbero funzionare come un'annotazione personalizzata. Dai uno sguardo a TestRule come punto di partenza. È possibile implementare una regola basata su tale interfaccia e quindi utilizzare le annotazioni @Rule o (metodo-livello) @Rule per metterle in gioco nei test.

Un buon esempio concreto è ExpectedException, che consente di specificare eccezioni come il parametro previsto per @Test (e quindi alcuni).

4

Per fare in modo che JUnit4 prelevi le annotazioni personalizzate, è necessario scrivere la propria implementazione Runner personalizzata e quindi fornirla con l'annotazione RunWith nella classe Test.

È possibile iniziare dando un'occhiata a BlockJUnit4ClassRunner, che è il runner di implementazione predefinito per JUnit 4 (se la memoria mi serve bene).

Supponendo che si vorrebbe prendere un'annotazione personalizzata denominata @MyTest con un corridore MyRunner personalizzato, la classe di test sarebbe simile:

@RunWith(MyRunner.class) 
class Tests { 
    ... 
    @MyTest 
    public void assumeBehaviour() { 
     ... 
    } 
} 

La risposta da "Reid Mac" fa un lavoro abbastanza buono a decifrare come viene implementata un'annotazione personalizzata.

+6

Non c'è più la risposta "Reid Mac". – BrunoJCM

1

È possibile creare personalizzato TestRule come indicato nella prima risposta oppure è possibile utilizzare/estendere TestWatcher che dispone già del metodo per l'elaborazione dell'inizio/fine del test. C'è un metodo apply(Statement base, Description description) in cui la descrizione è in realtà un involucro attorno al metodo di prova. Description ha un ottimo metodo getAnnotation(annotationClass) che consente di fare ciò che si desidera specificando un'annotazione personalizzata che si desidera elaborare

Problemi correlati