Mam więc następujący kod w całym systemie. Obecnie piszemy testy jednostkowe retrospektywnie (lepiej późno niż nigdy nie był mój argument), ale nie rozumiem, jak to byłoby możliwe do przetestowania? public function validate($value, Constraint $constraint) { $searchEntity = EmailAlertToSearchAdapter::adapt($value); $queryBuilder = SearcherFactory::getSearchDirector($searchEntity->getKeywords()); $adapter = new SearchEntityToQueryAdapter($queryBuilder, $searchEntity); $query = $adapter->setupBuilder()->build(); $totalCount …
Pracuję dla dużej firmy i jestem odpowiedzialny za dużą aplikację Java z tysiącami testów Junit. Od kiedy przeniosłem się do tej roli, przeprowadzono 200–300 zepsutych testów (prawdopodobnie zepsutych przez lata). Testy są stare i kruche i stanowią bałagan zależności od spaghetti, które zwykle kończą się danymi na żywo w piaskownicy. …
Zacznijmy od przykładu. Powiedzmy, że mam wywoływaną metodę, exportktóra zależy w dużym stopniu od schematu DB. Przez „mocno zależy” rozumiem, że dodanie nowej kolumny do określonej tabeli często (bardzo często) prowadzi do zmiany odpowiedniej exportmetody (zwykle należy również dodać nowe pole do danych eksportu). Programiści często zapominają o zmianie exportmetody, …
Jakiś czas temu przeczytałem na odpowiedzi Przepełnienie stosu, której nie mogę znaleźć, zdanie wyjaśniające, że powinieneś przetestować publiczne interfejsy API, a autor powiedział, że powinieneś przetestować interfejsy. Autor wyjaśnił również, że jeśli zmieni się implementacja metody, nie trzeba modyfikować przypadku testowego, ponieważ spowoduje to zerwanie umowy zapewniającej działanie testowanego systemu. …
Załóżmy, że istnieje klasa narzędziowa, która udostępnia niektóre typowe metody statyczne używane wszędzie w kodzie przez wiele innych klas. Jak zaprojektowałbyś swoje testy jednostkowe dla konsumentów narzędzia, aby ich testy zakończyły się niepowodzeniem, jeśli którykolwiek z testów narzędzia nie przejdzie pomyślnie? Czy możesz to zrobić, czy musisz sam sprawdzić, czy …
Mam interfejs o nazwie IContext. W tym celu tak naprawdę nie ma znaczenia, co robi, oprócz następujących czynności: T GetService<T>(); Metoda ta polega na sprawdzeniu bieżącego kontenera DI aplikacji i próbie rozwiązania zależności. Myślę, że dość standardowy. W mojej aplikacji ASP.NET MVC mój konstruktor wygląda tak. protected MyControllerBase(IContext ctx) { …
Odziedziczyłem internetową grę edukacyjną. W ciągu ostatniego roku pracowałem nad ustabilizowaniem kodu i dodaniem nowych funkcji. Większość logiki znajduje się w interfejsie, więc testy jednostek zaplecza, choć pomocne, obejmują niewielki procent kodu. Gra osiągnęła punkt, w którym zaczyna się komplikować. Istnieją dwie różne tryby dla każdej gry, a gra zachowuje …
Z wartościowego punktu widzenia w mojej praktyce widzę dwie grupy testów jednostkowych: Testy, które testują nietrywialną logikę. Napisanie ich (przed wdrożeniem lub po nim) ujawnia pewne problemy / potencjalne błędy i pomaga zachować pewność w przypadku zmiany logiki w przyszłości. Testy testujące bardzo trywialną logikę. Testy te bardziej przypominają kod …
Napisałem tę klasę, która robi kilka rzeczy (być może jest to naruszenie zasady pojedynczej odpowiedzialności). Teraz zdaję sobie sprawę, że jakaś inna część projektu potrzebuje fragmentu tej logiki, a sposób, w jaki ją ujawnię, polega na wyodrębnieniu klasy z mojego oryginalnego Testowanego Systemu. Spodziewam się, że będę w stanie to …
Mam więc moduł uwierzytelniania, który napisałem jakiś czas temu. Teraz widzę błędy na mojej drodze i piszę dla nich testy jednostkowe. Podczas pisania testów jednostkowych trudno mi wymyślić dobre nazwiska i dobre obszary do przetestowania. Na przykład mam takie rzeczy Wymaga Logowania_ powinien być_redirect_when_not_logged_in Wymaga Logowania_powinna_przejść_przejście_w momencie_logowania_w Login_should_work_when_given_proper_credentials Osobiście uważam, …
Robię testy jednostkowe i na jednej z moich klas muszę wysłać wiadomość e-mail z jednej z metod, więc za pomocą wstrzykiwania konstruktora wstrzykuję instancję Zend_Mailklasy, która jest w środowisku Zend. Teraz niektórzy twierdzą, że jeśli biblioteka jest wystarczająco stabilna i nie zmienia się często, nie trzeba jej owijać. Zakładając, że …
W obecnym projekcie moce, które chcą włączyć testy jednostkowe do naszego cyklu rozwoju, aby uniknąć stałej liczby błędów, które wydają się przenikać do naszego kodu. Problem polega na tym, że kod spaghetti jest w 95% procenty proceduralny, z którym nigdy nie przeprowadzałem testów jednostkowych (całe moje doświadczenie z testowaniem jednostkowym …
Chociaż istnieją sposoby, aby nie przeprowadzać testów jednostkowych, jaka jest wartość sprawdzania w nieudanych testach jednostkowych? Posłużę się prostym przykładem: rozróżnianie wielkości liter. W obecnym kodzie rozróżniana jest wielkość liter. Prawidłowym wejściem do metody jest „Cat” i zwraca ona wyliczenie Animal.Cat. Jednak pożądana funkcjonalność metody nie powinna uwzględniać wielkości liter. …
Co robisz, gdy piszesz test i dochodzisz do punktu, w którym musisz zdać test, i zdajesz sobie sprawę, że potrzebujesz dodatkowej funkcjonalności, która powinna być podzielona na własną funkcję? Ta nowa funkcja również musi zostać przetestowana, ale cykl TDD mówi: „Nie udać się testem, sprawić, by przeszedł, a następnie refaktoryzować”. …
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.