Netbeans i PHPUnit – jak ułatwić sobie testy

Jak wszyscy (albo i nie) wiedzą, na co dzień korzystam z Netbeans IDE. Niedawno w pracy zmieniliśmy tryb rozwijania oprogramowania na taki, który obejmuje między innymi metodykę TDD (Test Driven Development). Wobec tego faktu, powstała konieczność tworzenia i uruchamiania testów jednostkowych. Netbeans wspiera obie te czynności zapewniając przyjemny graficzny interfejs dla wszystkich związanych z tym operacji, jak również generator plików testów dla klas. Ten mały tutorial ma pokazać, jak w kilku prostych krokach zainstalować PHPUnit oraz zintegrować go z Netbeans IDE.

Pierwsze co musimy zrobić, to zainstalowanie menedżera paczek „PEAR„. Jest on potrzebny do ściągnięcia PHPUnit wraz z zależnościami. Nie jest to konieczne do rozpoczęcia testów z PHPUnitem, natomiast, jako, że PEAR jest standardowym repozytorium bibliotek dla języka PHP warto się z nim przy okazji zapoznać.

By zainstalować menedżera paczek PEAR, należy wykonać następujące kroki:

  1. Ściągnąć instalator do katalogu PHP z aktualnie używaną wersją
  2. Otworzyć wiersz poleceń, przejść do katalogu zawierającego ściągniętą paczkę i wpisać php go-pear.phar
  3. Instalacja menedżera pakietów odbędzie się automatycznie, na końcu instalator poprosi nas o sprawdzenie wszystkich ustawień i ścieżek, z ciekawostek powiem, że jeżeli będziemy chcieli zmienić ustawienie miejsca gdzie znajduje się php.exe to wyskoczy nam ładne windowsowe okienko wyboru pliku (a jednak się da!)

W tym momencie powinniśmy mieć zainstalowanego menedżera paczek. By zainstalować PHPUnit, należy wykonać następujące kroki:

  1. W konsoli wpisać (może być konieczność przejścia do katalogu z pehapem):

    pear channel-discover pear.phpunit.de
    pear channel-discover components.ez.no
    pear channel-discover pear.symfony-project.com
  2. Zainstalować PHPUnit

    pear install -o phpunit/PHPUnit

    Przełącznik -o powoduje, że zostaną zainstalowane automatycznie wszystkie wymagane zależności. Podczas instalacji zdarzyło mi się, że nie można było zainstalować niektórych potrzebnych paczek, ponieważ były w wersjach „beta”. W takim przypadku należy zainstalować je ręcznie wpisując:

    pear install nazwa_paczki

Mając już zainstalowanego PHPUnit, możemy go skonfigurować do pracy z Netbeans:

  1. Przechodzimy do opcji i ustawiamy ścieżkęUstawianie ścieżi do PHPUnit w NetBeans
  2. Przechodzimy do właściwości bieżącego projektu i ustawiamy folder testowy (wpierw musimy go stworzyć w drzewie katalogów)Ustawienie katalogu z testami w własciwościach projektu
  3. Ustawiamy boostrap i konfigurację PHPUnitKonfiguracja PHPUnit i bootstrapPo co są nam potrzebne oba pliki ? Dzięki boostrapowi będziemy przede wszystkim ustawić własny autoloader. Natomiast configuration.xml daje nam dostęp do wielu ustawień PHPUnit
  4. Przykład boostrapa:
    function load($className) {
        $path = str_replace('_', DIRECTORY_SEPARATOR, $className);
        $path = '../src/' . $path . '.php';
        if (file_exists($path)) {
            require $path;
        }
    }
    
    spl_autoload_register('load');
    

    Mocno polecam rejestrację autoloadera przez spl_autoload_register, ponieważ zdaje się PHPUnit ma własny autoloader i jest to najprostszy sposób by nie wchodzić z nim w konflikt.

Gdy już mamy wszystko zrobione możemy cieszyć się takimi oto udogodnieniami jak:

  • generowanie szkieletów testów prawyklik na plik -> tools -> create PHPUnit test
  • automatyczne uruchamianie testów (alt+f6)
  • ładne okienko z podsumowaniem 😉 Ładne okienko z podsumowaniem

Mam nadzieję, że ktoś skorzysta z tego małego tutoriala i będzie bez przeszkód oddać się unit testom 😉

  1. Zyx pisze:

    Każdy normalny autoloader rejestruje się przez spl_autoload_register()… :).

    Prawdę mówiąc konfigurowałem to niby u siebie, ale na dobrą sprawę dalej odpalam PHPUnita ręcznie. Specyfika wygodnej linuksowej konsoli – generalnie przy bardziej skomplikowanych konfiguracjach jest ona jednak wygodniejsza. Ja np. u siebie mam zawsze dwa pliki: z pokryciem kodu i szybsze bez niego, nie wspominając już o zróżnicowaniu na poszczególne główne gałęzie PHP, czego NetBeans nie wspiera.

    BTW. Przeskaluj screenshoty, bo wystają.

  2. Ja czasami jak piszę sobie coś na szybko to używam __autoload, dlatego wspominam coby ktoś miał podobne zwyczaje. Jeżeli chodzi o screenshoty to zastanawiałem się nad przeskalowaniem ale wtedy nic na nich nie widać, ale chyba zmienię po prostu layout :p. Co do konsoli to pewnie masz rację, ale mnie generalnie wystarcza obsługa PHPUnit w NB.

  3. Krystian pisze:

    Rewelacja, akurat dzisiaj szukałem informacji o tym, oraz o SVN w Netbeans :-)

  4. Mam nadzieję, że wypisałem wszystko co potrzebowałeś 😉

  5. gaza pisze:

    Witaj. Dzięki Twojemu wpisowi „ruszyłem” z testami. Jako że jestem na początku drogi, to opieram się na tym co mi wygenerował NB. Zacząłem od prostego modelu i już na początku mam problem. Po rozpoczęciu testów otrzymuje komunikat „Model_TagTest::testAddToDictionary()
    Zend_Db_Table_Exception: No adapter found for Model_Tag” i poniżej linki do źródeł i informację, że test się nie udał. Wiem ,że pytanie może zbyt szczegółowe, ale być może rozwiązanie jakieś banalne ? Nie wiem, nie ładuje czegoś? Dodam, że bootstrap został wygenerowany automatyczne, phpunit.xml też. Mógłbyś coś zasugerować ?
    Pozdrawiam

  1. There are no trackbacks for this post yet.

Leave a Reply

Informuj mnie o odpowiedziach poprzez e-mail. Możesz również subskrybować wpis bez zostawiania komentarza.