Muszę wcielić się w diabła, który jest zwolennikiem tego pytania, ponieważ nie mogę go dobrze bronić z powodu braku doświadczenia. Oto oferta, dostaję koncepcyjnie różnice między testowaniem jednostkowym a testowaniem integracyjnym. Skupiając się w szczególności na metodach trwałości i repozytorium, test jednostkowy użyłby makiety prawdopodobnie za pośrednictwem struktury takiej jak Moq, aby stwierdzić, że wyszukiwane zamówienie zostało zwrócone zgodnie z oczekiwaniami.
Załóżmy, że zbudowałem następujący test jednostkowy:
[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'
}
Więc jeśli skonfiguruję OrderIdExpected = 5
i mój próbny obiekt zwróci 5
jako identyfikator, mój test przejdzie. Rozumiem. I jednostka przetestowany kod, aby upewnić się co moi preform kod zwraca oczekiwanego obiektu i identyfikator, a nie coś innego.
Otrzymam następujący argument:
„Dlaczego po prostu nie pominąć testów jednostkowych i nie wykonać testów integracyjnych? To ważne jest testowanie procedury składowanej bazy danych i kodu. Wydaje się, że to zbyt dużo pracy, aby mieć testy jednostkowe i testy integracyjne, kiedy ostatecznie chcę wiedzieć, czy baza danych wywołuje i kod działa. Wiem, że testy trwają dłużej, ale muszą być uruchamiane i testowane niezależnie, więc wydaje mi się, że nie ma sensu mieć obu. Po prostu przetestuj, co jest ważne. ”
Mógłbym go obronić za pomocą definicji z podręcznika: „Cóż, to test integracyjny i musimy osobno przetestować kod jako test jednostkowy i, yada, yada, yada ...” Jest to przypadek, w którym purystyczne wyjaśnienie praktyk a rzeczywistość przegrywa. Czasami się na to natrafiam i jeśli nie jestem w stanie obronić rozumowania stojącego za kodem testów jednostkowych, który ostatecznie opiera się na zewnętrznych zależnościach, to nie mogę tego uzasadnić.
Dziękujemy za pomoc w tym pytaniu, dziękuję!