Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OOP][TDD][BDD] Algorytm a jego testowalność
Riggs
post
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?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.12.2025 - 07:47