Diciamo che ho una classe test chiamato testFixtureA
con diversi metodi testA
, testB
, testC
, ecc, ognuno con @Test
annotazione.jUnit ignorare i metodi @Test dalla classe base
Diciamo ora che sottoclassi testFixtureA
nella classe testFixtureAB
e non sovrascrivo nulla. testFixtureAB
è vuoto per ora.
Quando lancio test da testFixtureAB
, metodi testA
, testB
e testC
vengono eseguite mediante test corridore perché prova corridore non distingue tra i metodi di prova dalla classe e baseclass.
Come posso forzare il corridore di prova a tralasciare i test dalla baseclass?
Questo non è utile per il motivo che @martosoler indica nella risposta qui sotto - ci sono casi ovvi (nella mia situazione, test di selenio contro diversi browser) dove questo è un consiglio molto cattivo. Tu vuoi * lo stesso comportamento a volte; solo la configurazione delle variabili "SUT" si differenzia tra le sottoclassi. –
@ MikeBurton - In realtà, questo è un buon consiglio, anche se potrebbe non essere ovvio ciò che suggerisce Bozho. Quello che devi fare è * refactor * la tua classe base, estraendo il codice che dovrebbe essere riutilizzato in una nuova, (astratta) classe proto-base. La tua nuova classe di test estenderebbe quindi la classe proto-base piuttosto che quella che chiamavamo la classe base. Questo sarebbe un buon esempio di seguire l'LSP e la regola generale che non dovresti mai ignorare le implementazioni concrete. Se non ti dispiace rompere queste regole, puoi seguire la mia raccomandazione qui sotto. –
In realtà non so perché mi sono opposto a questo a luglio. Questa è esattamente la soluzione alla quale sono arrivato alla fine. Anche se a questo punto sembra che ci sia una soluzione AOP che risolverà meglio il mio problema specifico. Non sono abbastanza ambizioso da risolverlo al momento, comunque. –