Nel ricercare le migliori pratiche di unit test per aiutare a mettere insieme le linee guida per la mia organizzazione, ho incontrato la questione se sia meglio o utile separare i dispositivi di test (classi di test) o mantenere tutti i test per una singola classe in un file.
A proposito, mi riferisco ai "test unitari" nel senso puro che si tratta di test in white box rivolti a una singola classe, un'asserzione per test, tutte le dipendenze derise, ecc.
Uno scenario di esempio è una classe (chiamalo Documento) che ha due metodi: CheckIn e CheckOut. Ogni metodo implementa varie regole, ecc. Che controllano il loro comportamento. Seguendo la regola dell'asserzione per test, avrò più test per ciascun metodo. Posso mettere tutti i test in una singola DocumentTests
classe con nomi come CheckInShouldThrowExceptionWhenUserIsUnauthorized
e CheckOutShouldThrowExceptionWhenUserIsUnauthorized
.
Oppure, potrei avere due classi di test separate: CheckInShould
e CheckOutShould
. In questo caso, i miei nomi dei test verrebbero abbreviati ma sarebbero organizzati in modo che tutti i test per un comportamento specifico (metodo) siano uniti.
Sono sicuro che ci sono pro e contro di entrambi gli approcci e mi chiedo se qualcuno ha percorso il percorso con più file e, in caso affermativo, perché? Oppure, se hai optato per l'approccio a file singolo, perché ritieni che sia migliore?
testResponseContainsSuccessTrue()
, testResponseContainsMyData()
e testResponseStatusCodeIsOk()
. Li avrebbe in un singolo testResponse()
che ha tre afferma: assertEquals(200, response.status)
, assertEquals({"data": "mydata"}, response.data)
eassertEquals(true, response.success)