OK, quindi l'annotazione @Ignore
è utile per contrassegnare che un test case non deve essere eseguito.Test ignorando in modo condizionale in JUnit 4
Tuttavia, a volte voglio ignorare un test basato sulle informazioni di runtime. Un esempio potrebbe essere se ho un test di concorrenza che deve essere eseguito su una macchina con un certo numero di core. Se questo test fosse eseguito su un computer uniprocessore, non penso che sarebbe corretto passare semplicemente il test (poiché non è stato eseguito), e certamente non sarebbe giusto fallire il test e rompere la build .
Quindi voglio essere in grado di ignorare i test in fase di esecuzione, poiché questo sembra il risultato corretto (poiché il framework di test consentirà il passaggio della build ma registrerà che i test non sono stati eseguiti). Sono abbastanza sicuro che l'annotazione non mi darà questa flessibilità e sospetto che avrò bisogno di creare manualmente la suite di test per la classe in questione. Tuttavia, la documentazione non menziona nulla a riguardo e guardando attraverso lo API non è nemmeno chiaro come ciò sarebbe fatto a livello di programmazione (cioè come faccio a creare in modo programmatico un'istanza di Test
o simile che è equivalente a quella creata dall'annotazione @Ignore
?).
Se qualcuno ha fatto qualcosa di simile in passato, o ha una brillante idea di come potrei fare altrimenti, sarei felice di sentirne parlare.
@notnoop, questa non è affatto la mia osservazione. Sono ignorati. Il test runner IDEA li segnala in questo modo, e uno sguardo al codice sorgente JUnit mostra che segnala il test come ignorato. – Yishai
Per citare: "In futuro, questo potrebbe cambiare, e un'assunzione fallita potrebbe portare a ignorare il test." In effetti è cambiato, a partire da 4.5 credo. L'attuale javadoc dice: "Il runner JUnit predefinito tratta i test con ipotesi errate come ignorate.I corridori personalizzati possono comportarsi diversamente." http://github.com/KentBeck/junit/blob/7aac4b19d359285041ccb51d575235339a1a8be0/src/main/java/org/junit/Assume.java – Yishai
Grazie, è esattamente quello che sto cercando. La semantica di "Assume" sembra esattamente quello che sto cercando di fare qui, quindi anche se un corridore non lo tratta come "@ Ignore", credo che verrà gestito in modo appropriato. –