Już od jakiegoś czasu przygotowałem "McDell'a" Code Complete ". Teraz przeczytałem go ponownie w Hunt & Thomasa "The Pragmatic Programmer": Użyj twierdzeń! Uwaga: Twierdzenia o braku testów jednostkowych, czyli Debug.Assert()
.Czy testowanie jednostek powoduje, że Debug.Assert() jest niepotrzebny?
Po pytaniach SO When should I use Debug.Assert()? i When to use assertion over exceptions in domain classes twierdzenia są użyteczne dla rozwoju, ponieważ sytuacje "niemożliwe" można znaleźć dość szybko. I wydaje się, że są one powszechnie używane. O ile rozumiałem twierdzenia, w języku C# są często używane do sprawdzania zmiennych wejściowych dla "niemożliwych" wartości.
Aby testy jednostkowe były zwięzłe i izolowane w jak największym stopniu, robię klasy i metody dla feedu z danymi wejściowymi "niemoŜliwym" (jak pusty ciąg znaków).
Takie testy wyraźnie dokumentują, że nie polegają na określonych danych wejściowych. Uwaga: ćwiczę, co "wzorce testowe" Meszarosa "opisuję jako Minimal Fixture.
I o to właśnie chodzi: gdybym miał zapewnione osłony chroniące te dane, to wysadziłby moje testy jednostkowe.
Podoba mi się pomysł programowania asertywnego, ale z drugiej strony nie muszę go wymuszać. Obecnie nie mogę myśleć o jakimkolwiek użyciu dla Debug.Assert()
. Może jest coś, za czym tęsknię? Czy masz jakieś sugestie, gdzie mogą być przydatne? Może po prostu przeceniam użyteczność twierdzeń? A może mój sposób testowania musi zostać ponownie przeanalizowany?
Edytuj: Best practice for debug Asserts during Unit testing jest bardzo podobny, ale nie odpowiada na pytanie, które mi przeszkadza: czy powinienem zadbać o Debug.Assert()
w języku C#, czy testuję tak, jak to opisałem? Jeśli tak, to w jakiej sytuacji są one przydatne? Z mojego obecnego punktu widzenia takie testy jednostek sprawiają, że Debug.Assert()
jest niepotrzebne.
Kolejny punkt: jeśli naprawdę tak uważasz, jest to duplikat pytania, po prostu dodaj komentarz.
Należy zauważyć, że struktura testowa programu Visual Studio nie * traktuje błędu Debug.Assert jako niepowodzenia testu jednostkowego. – yoyo