Czy są jakieś aplikacje open source, które są opracowywane przy użyciu programowania opartego na testach, które służą jako modele tego, jak powinny działać dobre testy jednostkowe?
Wolałbym zobaczyć przykłady w C # i .NET. (Pamiętaj, że wspomniałem o aplikacjach, nie tylko bibliotekach).
Jestem programistą średniego poziomu, który naprawdę chce wierzyć i ćwiczyć TDD. Aplikacja, nad którą pracuję w codziennej pracy, jest dość skomplikowana - około 1 miliona linii kodu - i chciałbym wprowadzić więcej testów jednostkowych. Mamy kilka testów jednostkowych, ale moje wysiłki w TDD i praca nad kodem, który już jest testowany, nie były zachęcające.
Z mojego, co prawda ograniczonego doświadczenia, TDD wydaje się zachęcać do dużej złożoności w imię oddzielenia. Fragmenty aplikacji, które są trudne do przetestowania - i które przypadkowo wydają się być krytyczne - zostają wypchnięte na peryferie, w sferę testów integracyjnych, które mogą, ale nie muszą, zostać napisane. (Mam tu na myśli zwykłych podejrzanych, dostęp do systemu plików, nawadnianie obiektów z bazy danych, asynchroniczne połączenia internetowe itp.)
Testowany kod zwykle wymaga dużej współpracy między obiektami i być może pewnej prostej logiki przepływu, która wszystko dzieje się w pamięci i którą można prawdopodobnie napisać w prostszy, bardziej zrozumiały sposób, gdyby wszystko nie musiało być całkowicie oddzielone dla testów.
Rozumiem techniki kpienia z zależności i tym podobne, ale z mojego doświadczenia wynika, że częste stosowanie kpiny prowadzi do bardzo kruchych testów. Jeśli moim pierwszym instynktem po zobaczeniu kilku testów zmieniających kolor na czerwony jest „Świetnie, teraz muszę naprawić wszystkie kpiny”, to moje testy stały się oporem, a nie siatką bezpieczeństwa.
Próbuję ominąć tę mentalną barierę i w ramach tego czytam książkę Michaela Feathersa pt. „ Skutecznie współpracując ze starszym kodem” . Mam nadzieję, że pokaże mi część tego, czego mi brakuje.
Chciałbym również przestudiować nietrywialne aplikacje .NET z dobrym pokryciem kodu, być może system zarządzania treścią lub aplikację CRUD. Framework testowy FitNesse, o którym mówi wujek Bob, jest prawdopodobnie czymś, na co mogę się przyjrzeć, ale fajnie byłoby zobaczyć coś napisanego w języku, który znam najbardziej.
Wszelkie sugestie lub słowa mądrości będą mile widziane.