Ho bisogno di recitare un po 'il diavolo su questa domanda perché non posso difenderlo bene a causa della mancanza di esperienza. Ecco l'accordo, ottengo concettualmente le differenze tra test di unità e test di integrazione. Quando si concentra in particolare sui metodi di persistenza e sul repository, un test unitario utilizza un simulatore possibilmente tramite un framework come Moq per affermare che dire che un ordine cercato è stato restituito come previsto.
Diciamo che ho costruito il seguente test unitario:
[TestMethod]
public void GetOrderByIDTest()
{
//Uses Moq for dependency for getting order to make sure
//ID I set up in 'Arrange' is same one returned to test in 'Assertion'
}
Quindi, se imposto OrderIdExpected = 5
e il mio oggetto mock restituisce 5
come l'ID che il mio test supererà. Capisco. Ho provato l'unità il codice per assicurarmi che il mio codice preforma restituisca l'oggetto e l'ID previsti e non qualcos'altro.
L'argomento che otterrò è questo:
"Why not just skip the unit tests and do integration tests? It's testing the database stored procedure and your code together that's important. It seems like too much extra work to have unit tests and integration tests when ultimately I want to know if the database calls and the code work. I know the tests take longer, but they have to be run and tested regardless so it seems pointless to me to have both. Just test against what matters."
Potrei difenderlo con una definizione di libro di testo come: "Beh, questo è un test di integrazione e dobbiamo testare il codice separatamente come test unitario e, yada, yada, yada ..." Questo è un caso in cui una spiegazione purista delle pratiche contro la realtà sta perdendo. A volte mi imbatto in questo e se non posso difendere il ragionamento dietro il codice di test unitario che alla fine si basa su dipendenze esterne, allora non posso spiegarlo.
Qualsiasi aiuto su questa domanda è molto apprezzato, grazie!