Wszędzie czytałem o tym, jakie są świetne, ale z jakiegoś powodu nie wiem, jak dokładnie mam coś przetestować. Czy ktoś mógłby opublikować przykładowy kod i jak by go przetestował? Jeśli to nie jest zbyt duży problem :)
php
unit-testing
testing
tdd
letgo
źródło
źródło
Odpowiedzi:
Istnieje trzeci „framework”, który jest zdecydowanie łatwiejszy do nauczenia - nawet łatwiejszy niż prosty test, nazywa się phpt.
Primer można znaleźć tutaj: http://qa.php.net/write-test.php
Edycja: właśnie zobaczyłem Twoją prośbę o przykładowy kod.
Załóżmy, że masz następującą funkcję w pliku o nazwie lib.php :
Zwracany jest parametr, który przekazujesz w naprawdę prosty i bezpośredni sposób. Spójrzmy więc na test dla tej funkcji, nazwiemy plik testowy foo.phpt :
Krótko mówiąc, podajemy parametrowi
$bar
wartość"Hello World"
ivar_dump()
odpowiadamy na wywołanie funkcjifoo()
.Aby uruchomić ten test, użyj:
pear run-test path/to/foo.phpt
Wymaga to działającej instalacji PEAR w twoim systemie, co jest dość powszechne w większości przypadków. Jeśli potrzebujesz go zainstalować, polecam zainstalować najnowszą dostępną wersję. Jeśli potrzebujesz pomocy w konfiguracji, możesz zapytać (ale zapewnij system operacyjny itp.).
źródło
run-tests
?Istnieją dwie struktury, których można używać do testowania jednostkowego. Simpletest i PHPUnit , które wolę. Przeczytaj samouczki dotyczące pisania i uruchamiania testów na stronie głównej PHPUnit. Jest to dość łatwe i dobrze opisane.
źródło
Możesz zwiększyć efektywność testów jednostkowych, zmieniając styl kodowania, aby go dostosować.
Polecam przejrzenie bloga testującego Google , w szczególności post na temat pisania kodu testowalnego .
źródło
Zrobiłem własne, ponieważ nie miałem czasu, aby nauczyć się czyjegoś sposobu robienia rzeczy, napisanie tego zajęło około 20 minut, 10, aby dostosować go do publikowania tutaj.
Unittesting jest dla mnie bardzo przydatny.
jest to trochę długie, ale wyjaśnia samo siebie i na dole jest przykład.
To daje:
źródło
Pobierz PHPUnit. Jest bardzo łatwy w użyciu.
Następnie zacznij od bardzo prostych stwierdzeń. Z AssertEquals możesz zrobić wiele, zanim zajmiesz się czymkolwiek innym. To dobry sposób, aby zmoczyć stopy.
Możesz także spróbować najpierw napisać swój test (ponieważ zadałeś swoje pytanie tag TDD), a następnie napisać swój kod. Jeśli nie zrobiłeś tego wcześniej, to otwiera oczy.
źródło
W przypadku prostych testów ORAZ dokumentacji php-doctest jest całkiem niezły i jest to naprawdę łatwy sposób na rozpoczęcie, ponieważ nie musisz otwierać oddzielnego pliku. Wyobraź sobie poniższą funkcję:
Jeśli teraz uruchomisz ten plik przez phpdt (program uruchamiający wiersz poleceń php-doctest), zostanie uruchomiony 1 test. Doctest jest zawarty w bloku <code>. Doctest wywodzi się z języka Python i nadaje się do podawania przydatnych i wykonalnych przykładów działania kodu. Nie możesz go używać wyłącznie, ponieważ sam kod zaśmiecałby przypadki testowe, ale odkryłem, że jest przydatny razem z bardziej formalną biblioteką tdd - używam phpunit.
Ta pierwsza odpowiedź tutaj ładnie to podsumowuje (nie jest to test unit vs doctest).
źródło
phpunit to w zasadzie framework do testów jednostkowych defacto dla php. jest też DocTest (dostępny jako pakiet PEAR) i kilka innych. Sam php jest testowany pod kątem regresji i tym podobnych za pomocą testów phpt, które można również uruchomić za pomocą gruszki.
źródło
Testy Codeception są bardzo podobne do zwykłych testów jednostkowych, ale są o wiele potężniejsze w rzeczach, w których potrzebujesz kpiny i krojenia.
Oto przykładowy test kontrolera. Zwróć uwagę, jak łatwo są tworzone kody pośredniczące. Jak łatwo sprawdzić, czy metoda została wywołana.
Są też inne fajne rzeczy. Możesz przetestować stan bazy danych, system plików itp.
źródło
Oprócz doskonałych sugestii dotyczących już podanych frameworków testowych, czy tworzysz swoją aplikację z jednym z frameworków WWW PHP, które ma wbudowane automatyczne testowanie, takim jak Symfony lub CakePHP ? Czasami posiadanie miejsca, w którym można po prostu rzucić okiem na swoje metody testowe, zmniejsza tarcie związane z uruchamianiem, które niektórzy ludzie kojarzą z testowaniem automatycznym i TDD.
źródło
O wiele za dużo, aby ponownie opublikować tutaj, ale tutaj jest świetny artykuł na temat korzystania z phpt . Obejmuje wiele aspektów związanych z phpt, które są często pomijane, więc warto ją przeczytać, aby poszerzyć swoją wiedzę o php poza zwykłym napisaniem testu. Na szczęście artykuł omawia również pisanie testów!
Główne punkty dyskusji
źródło
Wiem, że jest tu już wiele informacji, ale ponieważ nadal pojawiają się one w wyszukiwaniach Google, równie dobrze mogę dodać do listy pakiet Chinook Test Suite . Jest to prosta i niewielka platforma testowa.
Możesz z łatwością testować swoje klasy, a także tworzyć pozorowane obiekty. Testy przeprowadzasz za pomocą przeglądarki internetowej i (jeszcze nie) przez konsolę. W przeglądarce możesz określić, jaką klasę testową lub nawet metodę testową uruchomić. Możesz też po prostu uruchomić wszystkie testy.
Zrzut ekranu ze strony github:
Podoba mi się sposób, w jaki przeprowadzasz testy. Odbywa się to za pomocą tak zwanych „płynnych asercji”. Przykład:
Tworzenie pozorowanych obiektów również jest proste (z płynną składnią):
W każdym razie więcej informacji można znaleźć na stronie github z przykładowym kodem:
https://github.com/w00/Chinook-TestSuite
źródło