Storia della questione:
Il pattern Arrange-Act-Assert (AAA) è stato proposto per semplificare la struttura dei test e aumentare la loro leggibilità. È ampiamente utilizzato nei moderni framework di test ed è uno standard de facto nella scrittura di test automatici di qualsiasi tipo.
Problema:
Senza una chiara struttura, i casi di test diventano ingombranti, difficili da leggere e poco manutenibili. Si genera confusione tra la preparazione dei dati, la chiamata del comportamento da testare e la verifica del risultato. Questo porta all'accumulo di debito tecnico e a errori nei test.
Soluzione:
Attenersi rigorosamente al pattern AAA durante la scrittura del test.
Caratteristiche chiave:
È possibile violare la sequenza AAA se il test sembra ovvio?
Di solito no. Qualsiasi deviazione dalla struttura AAA riduce la leggibilità del test per altri sviluppatori e lo rende vulnerabile a errori nella manutenzione.
È accettabile combinare Act e Assert in un'unica espressione per test brevi?
È meglio evitarlo, poiché complica la comprensione e l'eventuale espansione del test in futuro.
È necessario includere la logica di pulizia dei dati (cleanup) nella fase Arrange?
No. La pulizia o Teardown di solito è implementata in metodi separati, ad esempio, negli hook del framework di test (After, AfterEach).
Un test per l'aggiunta di un record al database esegue prima un controllo e solo dopo lo aggiunge. Viene ostacolato da un assert casuale a metà.
Pro:
Contro:
Il test inizia con la pulizia dei dati, poi segue l'aggiunta del record, e solo dopo viene effettuato il controllo del risultato, rigorosamente secondo AAA.
Pro:
Contro: