Il DDD aggrega un buon limite per il test delle unità?

2

Un aggregato può rappresentare un limite di sistema piuttosto stabile.

Ha senso scrivere gli aggregati dei test di input e output per eseguire la maggior parte dei test? In teoria potremmo utilizzare un aggregato come metodo guidato dai dati per eseguire test. Possiamo creare dati che entrano nel nostro sistema senza un livello di database e otteniamo un aggregato elaborato. Potremmo potenzialmente specificare molti casi in questo modo.

Il rischio qui è che limitiamo la nostra capacità di modificare gli aggregati perché potremmo aver bisogno di riscrivere tutti i nostri aggregati di test se un aggregato cambia. Anche se potremmo migrarli.

    
posta Arturo Hernandez 05.03.2016 - 01:04
fonte

2 risposte

3

Gli aggregati sono sicuramente dei buoni candidati per i test unitari perché

  • Contengono parte della logica di dominio della tua applicazione. C'è intelligenza in loro (controllo invariante, transizioni di stato, calcoli, attivazione di eventi, ecc.) Che vuoi essere corretto.

  • Gli aggregati dovrebbero essere privi di elementi relativi all'I / O. Puoi comporre un Aggregate in memoria, chiamare uno dei suoi metodi per testarlo e tutto sarà veloce e isolato dagli altri livelli.

I cambiamenti funzionali non sono IMO un argomento valido contro gli aggregati di test unitari o contro qualsiasi tipo di test. I test sono specifiche eseguibili. Se i requisiti cambiano, alcuni test devono essere modificati.

    
risposta data 09.03.2016 - 09:59
fonte
5

Quando stai per testare una classe o un metodo che prende un aggregato come input e / o output, pensa a cosa significherebbe l'alternativa.

Ovviamente hai bisogno di un modo per fornire dati di test al "soggetto in prova". Utilizza l'interfaccia pubblica esistente, riutilizzando i tuoi aggregati per i dati di test oppure puoi creare un'interfaccia artificiale solo a scopo di test, che duplica in modo diverso tutti i dati dei tuoi aggregati. Non mi aspetto che ciò causi meno interventi di manutenzione rispetto allo sforzo derivante da una modifica globale.

    
risposta data 05.03.2016 - 05:30
fonte

Leggi altre domande sui tag