Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 13 Dołączył: 16.06.2007 Ostrzeżenie: (0%)
|
Witam,
chciałbym poruszyć mam nadzieję ciekawe zagadnienie. Otóż ostatnio pisałem sobie dość rozbudowany algorytm i chciałem wykonać go za pomocą metodyk TDD/BDD i narzędzi PHPSpec i PHPUnit. Mam jednak co do niego kilka wątpliwości. Weźmy za przykład algorytm który kiedyś robiłem i wiem, że działa dobrze. Koncepcja też jest chyba ok. SudokuSolver - klasa, która jako konstruktor przyjmuje tablicę 9x9 częściowo wypełnioną. Posiada metodę solve() dostępną publicznie która zwraca albo rozwiązanie w postaci tablicy 9x9 bez wartości null (czyli całą wypełnioną) albo rzuca wyjątkiem jeśli nie ma rozwiązania. Wiadomo, że metodę w metodzie solve() trzeba wywołać częściowe metody np. sprawdzające rozwiązanie, np. checkColumn, checkRow, check3x3. Zakodowałem je jako metody prywatne bo nie widzę potrzeby możliwości wywołania ich poza ciałem klasy - z resztą solve ma dać wynik. Jak podejść do pisania testów takiej klasy? W PHPSpec mógłbym tylko odwoływać się do solve() i oczekiwać wyniku. w PHPUnit od biedy można zrobić ReflectionClass ale to chyba nie o to chodzi w testowaniu... Chciałbym mieć możliwie największe pokrycie kodu testami, tak żeby mieć pewność że algorytm działa prawidłowo. Jak testować poszczególne etapy - czy np checkColumn zostało wywołane x razy itp.. Czy może bez wystawienia metod jako public nie mam szans na dobre przetestowanie kodu? |
|
|
|
Riggs [OOP][TDD][BDD] Algorytm a jego testowalność 2.02.2016, 09:25:00
Crozin Pomijając szczególne przypadki, metody niepubliczn... 2.02.2016, 09:51:47
destroyerr Jeżeli chcesz testować różne warunki sprawdzania t... 2.02.2016, 11:22:16
Riggs @destroyerr jest to jakiś pomysł, pewnie tylko pro... 2.02.2016, 11:43:13
Pyton_000 Możesz wydzielić "Valiataors" np. RowVal... 2.02.2016, 11:57:26
lukaskolista Cytatw PHPUnit od biedy można zrobić ReflectionCla... 2.02.2016, 15:11:53
destroyerr @Pyton_000 No co Ty nie powiesz... 2.02.2016, 21:42:23
Pyton_000 Hahaha Tak to jest jak się nie odświeża stron 2.02.2016, 22:46:46 ![]() ![]() |
|
Aktualny czas: 21.12.2025 - 07:47 |