Asercje umożliwiają przetestowanie założeń dotyczących programu. Na przykład, jeśli napiszesz metodę obliczającą prędkość cząstki, możesz stwierdzić, że obliczona prędkość jest mniejsza niż prędkość światła.
Zarówno twierdzenia, jak i testy jednostkowe służą jako dokumentacja bazy kodu i sposób wykrywania błędów. Główne różnice polegają na tym, że funkcja działa jako kontrola poczytalności i widzi rzeczywiste dane wejściowe, podczas gdy testy jednostkowe działają na określonych symulowanych danych wejściowych i są testami na podstawie jednej dobrze zdefiniowanej „właściwej …
Często, gdy piszę funkcje, chcę się upewnić, że dane wejściowe są prawidłowe, aby wykryć takie błędy jak najwcześniej (uważam, że są to tak zwane warunki wstępne). Kiedy warunek wstępny zawiedzie, zawsze rzucałem wyjątek. Ale zaczynam wątpić, czy jest to najlepsza praktyka, a jeśli nie, twierdzenia byłyby bardziej odpowiednie. Więc kiedy …
Jestem wielkim fanem pisania assertczeków w kodzie C ++ jako sposobu na złapanie przypadków podczas programowania, które nie mogą się zdarzyć, ale zdarzają się z powodu błędów logicznych w moim programie. Jest to ogólnie dobra praktyka. Zauważyłem jednak, że niektóre funkcje, które piszę (które są częścią złożonej klasy) mają 5+ …
Ostatnio natknąłem się na nowo napisany kod, który był przeplatany dużą ilością Debug.Assert (C #). Czy powinniśmy nadal używać tego na szeroką skalę, pomimo ogólnego stosowania TDD, BDD i testów jednostkowych?
Domyślnym zachowaniem assertw C ++ jest brak działania w kompilacjach wersji. Zakładam, że dzieje się tak ze względu na wydajność i być może w celu uniemożliwienia użytkownikom wyświetlania nieprzyjemnych komunikatów o błędach. Twierdzę jednak, że sytuacje, w których assertstrzeliłby, ale został wyłączony, są jeszcze bardziej kłopotliwe, ponieważ aplikacja najprawdopodobniej ulegnie …
Naprawdę zakochałem się w testach jednostkowych i TDD - jestem zainfekowany testowo. Jednak testy jednostkowe są zwykle stosowane w metodach publicznych. Czasami jednak muszę przetestować pewne założenia-twierdzenia również metodami prywatnymi, ponieważ niektóre z nich są „niebezpieczne”, a refaktoryzacja nie może dalej pomóc. (Wiem, ramy testowania umożliwiają testowanie metod prywatnych). Stało …
Czy można dodawać odroczone twierdzenia w ten sposób? var actualKittens = actualKittens.Select(kitten => { Assert.IsСute(kitten); return kitten }); Dlaczego? Mogę więc powtórzyć tylko raz, nawet w przypadku stwierdzeń oczekujących zmaterializowanej kolekcji, na przykład: CollectionAssert.AreEquivalent(expectedKittens, actualKittens.ToList()); Może to być nie tylko Select, ale metoda ze zdefiniowanym iteratorem i mająca wiele kontroli …
Ostatnio staram się zrozumieć, jaka jest właściwa ilość sprawdzania i jakie są właściwe metody. Mam kilka pytań na ten temat: Jaki jest właściwy sposób sprawdzania błędów (złe dane wejściowe, złe stany itp.)? Czy lepiej jest jawnie sprawdzać błędy, czy używać funkcji takich jak asercje, które można zoptymalizować z końcowego kodu? …
Piszę skrypt, który robi coś z plikiem tekstowym (to, co robi, nie ma znaczenia dla mojego pytania). Więc zanim zrobię coś z plikiem, chcę sprawdzić, czy plik istnieje. Mogę to zrobić, nie ma problemu, ale chodzi bardziej o estetykę. Oto mój kod, implementujący to samo na dwa różne sposoby. def …
O pisaniu kaczek : Wpisywaniu kaczek pomaga zwykle nie testować typów argumentów w metodach i funkcjach, polegając na dokumentacji, czytelnym kodzie i testowaniu w celu zapewnienia poprawnego użycia. Informacje na temat sprawdzania poprawności argumentów (EAFP: Łatwiej prosić o wybaczenie niż pozwolenie). Dostosowany przykład stąd : ... uważa się za bardziej …
Jestem wielkim fanem pisania stwierdzeń, umów lub wszelkiego rodzaju czeków dostępnych w języku, którego używam. Jedną z rzeczy, która mnie trochę niepokoi, jest to, że nie jestem pewien, jaka jest powszechna praktyka postępowania z duplikatami kontroli. Przykładowa sytuacja: najpierw piszę następującą funkcję void DoSomething( object obj ) { Contract.Requires<ArgumentNullException>( obj …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.