W skrócie, ideą testów jednostkowych jest zautomatyzowane, przeprowadzane przy użyciu specjalnych klas sprawdzanie wszystkich możliwych sytuacji związanych z funkcjonowaniem wybranego elementu aplikacji (np. modułu do pobierania listy nazwisk z bazy danych) przy pomocy zestawów testów (
test suites), składających się z pojedynczych prób (
test cases). Przykładowo, zestaw testów przeznaczonych do sprawdzenia wspomnianego pobierania nazwisk składałby się z prób dotyczących udanego i nieudanego łączenia się z bazą (to drugie np. w celu sprawdzenia obsługi błędów), podania prawidłowych i nieprawidłowych parametrów, otrzymania lub nieotrzymania wyników, itd. Bardzo przydatna jest tu zaimplementowana w narzędziu PHPUnit idea atrap obiektów (ang.
mock objects). Są to obiekty symulujące zachowanie elementów naszej aplikacji, np. modułu konwertera XML-CSV. Równie istotne jest sprawdzenie, czy nie pominęliśmy jakiegoś fragmentu kodu naszej aplikacji podczas testów. W tym celu PHPUnit pozwala na przeprowadzanie badań określanych jako
code coverage analysis z użyciem biblioteki Xdebug (
http://www.xdebug.org).
PHPUnit pozwala zarówno na przeprowadzanie klasycznych testów jednostkowych, a także na wykonywanie testów niekompletnych (takich, w których nie implementujemy od razu wszystkich metod, a mimo to są one przeprowadzane poprawnie), czy pomijanie wybranych zestawów prób. Przebieg i wyniki naszych badań mogą być automatycznie zapisywane w plikach o formacie XML, TAP (Test Anything Protocol) lub jako grafy odczytywane przez narzędzie GraphViz. Mogą także mieć formę komunikatów w standardzie JSON czy wpisów PEAR::Log.
Warto wiedzieć, że możemy testować dowolne elementy i warstwy aplikacji. Co więcej, PHPUnit współpracuje z narzędziami zewnętrznymi. Przykładowo, w sprawdzaniu instalacji i spójności aplikacji czy jej współpracy z bibliotekami pomoże nam integracja z Phingiem (
http://phing.info), który jest narzędziem przeznaczonym do automatyzacji procesów instalacji i konfiguracji. Testowanie działania interfejsu graficznego ułatwi nam natomiast napisane w JavaScripcie rozwiązania Selenium RC (
http://www.openqa.org/selenium-rc/), które służy do zautomatyzowanego wypełniania formularzy, klikania przycisków, wybierania opcji, itd.
W wersji 3.2.0 projektu PHPUnit wprowadzono działające w środowisku okienkowym GTK2 narzędzie ułatwiające przeprowadzanie testów z użyciem PHPUnit. Usunięto również klasę
PHPUnit_Extensions_TestSetup.
http://phpunit.de