![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 398 Pomógł: 10 Dołączył: 24.11.2004 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Chcialbym poznac Wasze zdanie dotyczące Unit Testów.
Osobiście zabieram się do tego od jakiegoś czasu i trudno mi jest to ugryźc. Znam API SimpleTest ale problem leży w tym, że nie wiem co i jak testowac, szczególnie klasy odpowiedzialne za zapis/odczyt danych ... co porównywac i z czym? Mock Objects ... kolejny temat zagadka. Docelowo chciałbym dojśc do takiego poziomu aly każdy build aplikacji był zautomatyzowany z testami znaczy: 1. Export z SVN 2. Odpal testy 3. Jezeli wszytko ok to przekopiuj odpowiednie pliki do odpowiednich katalogow, poustawiaj prawa dostepu i zalinkuj katalog aplikacji do document_root serwera. Piszcie co testujecie i jak ... przykladu kodu mile widziane ![]() Ten post edytował NoiseMc 1.12.2007, 20:37:06 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 398 Pomógł: 10 Dołączył: 24.11.2004 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Znalazlem cos ciekawego, przyklad testowania kontrolerow ZF:
http://www.alexatnet.com/node/12 Teraz mam pare pytan dotyczacych testowania warstwy modelu. Zalozmy, ze mamy klasy, ktore nazwe umownie ProductDO i ProductDAO. ProductDO nie musi byc testowana bo jest tylko obiektem przechowywujacym dane. ProductDAO ma nastepujace metody:
Jak to teraz przetestowac? W przypadku getByID() myslalem o sprawdzaniu czy zwraca obiekt typu ProductDO czyli:
ale co jezeli nie mam w bazie zadnych danych .... a moze zamiast testowac w ten sposob powinienem najpierw dodac obiekt do bazy co zwroci mi jego id (last_insert_id), a potem sprawdzic czy getByID zwroci mi obiekt klasy ProductDO. Ten post edytował NoiseMc 12.12.2007, 22:18:49 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Znalazlem cos ciekawego, przyklad testowania kontrolerow ZF: http://www.alexatnet.com/node/12 Taki sobie artykuł, testuje więcej niż jedną rzecz na raz, a zgodnie z założeniami testy powinny testować jedna małą rzecz. A tu mamy zależności od kontrolerów, bazy danych itd., że taki test się nie powiedzie nie znaczy, że nawalił kod który miał być testowany. Co do nie testowania ProductDO to się mylisz, ponieważ obiekt powinien przyjmować tylko to co ma i zracać jedynie to co ma zwrócić, a że taki test jest prosty (brak zależności) to szybko się napisze. Co do testowania ProductDAO, pobiera skądś dane, ale skąd? Jak bezpośrednio z bazy to musisz mieć testową bazę i na początku testu ją czyścić (tak jak jest to w przykładzie co podałeś) a potem dodać i odczytywać, to co właśnie dodałeś, więc wiesz co powinno być zwrócone. Jeśli bierze dane z bazy ale przez inny obiekt to powinieneś użyć Mock Objects, który będzie zwracał spreparowane dane. Aby nie testować obiektu pobierającego dane łącznie z tym, ten pobierający powinien mieć osobne testy. Ale ja jestem słaby w testowaniu, więc mogę się mylić w pewnych sprawach. P.S. Nie edytuj postu, tylko dopisuj kolejny... -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 15:11 |