Testy jednostkowe rozwoju wtyczek

17

Muszę zastosować testy jednostkowe dla jednej z moich wtyczek. Niedawno przeprojektowałem go na klasy, więc testowanie jednostkowe powinno być teraz łatwiejsze do zastosowania.

Jakie są skuteczne strategie testowania jednostkowego mojej wtyczki? Potrzebuję sposobu na użycie funkcji WordPress używanych we wtyczce, ale nie powinienem potrzebować działającej witryny WordPress (po prostu testować dane na DB AFAIK), prawda?

Trudno mi zrozumieć, jak po prostu przetestować wtyczkę, a nie wtyczkę w kontekście witryny. Mógłbym do tego użyć Selenium, ale teraz chcę skupić się na testowaniu funkcjonalności klas wtyczek, aby nie łamać ich przy każdej aktualizacji.

Fernando Briano
źródło

Odpowiedzi:

14

Jako były inżynier oprogramowania budujący duże typy biznesowe, który wylądował w agencji interaktywnej, pozwól, że podzielę się z tobą kilkoma przemyśleniami na temat testowania podczas tworzenia dla Wordpress:

  1. Twoje testy jednostkowe powinny przetestować najmniejszą liczbę zachowań, jakie klasa może wykonać. Każda klasa powinna mieć możliwość przetestowania niezależnie od Wordpress. Jeśli masz zależność od Wordpress, rozważ utworzenie próbnych obiektów i / lub metod w teście, aby obejść ten problem. Ostatecznie to trochę zmieni sposób pisania kodu, ale będzie o wiele bardziej testowalny. Jak zwykle brak darmowego lunchu.

  2. Gdy przejdziesz do poziomu testów funkcjonalnych, możesz przetestować kod przy użyciu zależności Wordpress. W tym miejscu faktycznie przetestowałbyś, czy Twoja wtyczka faktycznie wykonuje usługę, którą powinna.

  3. W zależności od tego, co robi Twoja wtyczka - rozważ użycie testów opartych na Selenium, które sprawdzają obecność danych w DOM przy użyciu identyfikatorów. Jest dość solidny i znacznie mniej prawdopodobne jest zerwanie wersji na wersję. Ponownie, sztuczka polega na tym, aby pomyśleć o testowaniu jako części cyklu życia oprogramowania. Duże zmiany w kodzie spadną kaskadowo do dużych zmian w testach. Cała część kosztów prowadzenia działalności gospodarczej.

Jeśli potrzebujesz pomocy z jakimkolwiek narzędziem, aby to osiągnąć - chętnie odpowiem, jeśli otworzysz nowe pytanie. Korzystam zarówno z PHPUnit, jak i jego rozszerzenia selenu w swojej pracy.

Ethan Seifert
źródło
1
Hej Ethan, dziękuję za tak profesjonalną odpowiedź. Nie mogę się spodziewać mniej od tej społeczności :) Spróbuję napisać Testy Jednostkowe dla moich klas i stworzyć kilka próbnych obiektów do obejścia funkcji WordPress. Krok 2 jest dla mnie naprawdę trudną częścią, ponieważ będę potrzebował instancji WordPress do pewnego rodzaju automatycznego testowania, w którym mógłbym zacząć używać Selenium później. Zacznę od PHPUnit i zobaczę, jak to pójdzie. Dzięki!
Fernando Briano
Idealna odpowiedź!
rsman
-1

Niedawno utworzyłem samouczek, który bierze informacje z mojego googlingu, aby pokazać, jak:

  1. Skorzystaj z Wordpress Core Make Testy jednostkowe
  2. Ukryj przestarzałe php / ostrzeżenia wysłane przez sesję
  3. Pokaż, jak ustawić opcje wtyczek w testach
  4. Użyj tych samych testów wp core make make, aby przetestować wiele wtyczek

Samouczek jest tutaj , mam nadzieję, że to pomaga

Daithí
źródło