SimpleTest vs PHPunit

Zastanawiałem się, czy ktoś, kto ma doświadczenie w obu tych rzeczach, może rzucić trochę światła na znaczącą różnicę między tymi dwoma, jeśli w ogóle?

Jakaś specyficzna siła każdego, która sprawia, że nadaje się do konkretnego przypadku?

Author: Jens A. Koch, 2008-08-29

12 answers

To pytanie jest dość przestarzałe, ale ponieważ wciąż jest coraz ruchu i odpowiedzi, myślę, że podać swój punkt tutaj ponownie, nawet tak już zrobiłem to na niektórych innych (nowszych) pytań.

I ' m naprawdę naprawdę dziwi mnie, że SimpleTest nadal {[13] } jest uważany za alternatywę dla phpunit. Może jestem po prostu źle poinformowany, ale z tego co widziałem:

  • PHPUnit jest standardem; większość frameworków go używa (jak Zend Framework (1&2), Cake, Agavi, nawet Symfony spada własny Framework w Symfony 2 dla phpunit).
  • PHPUnit jest zintegrowany z każdym PHP IDE (Eclipse, Netbeans, Zend Stuide, PHPStorm) i działa ładnie.
  • Simpletest ma rozszerzenie eclipse dla PHP 5.1 (A. K. A. old) I nic więcej.
  • PHPUnit działa dobrze z każdym serwerem ciągłej integracji, ponieważ wysyła wszystkie standardowe pliki dziennika dla pokrycia kodu i Raportów z testów.
  • Simpletest nie. Chociaż nie jest to duży problem, aby rozpocząć z nim ugryzie cię duży czas jak przestaniesz "tylko testować" i zaczniesz tworzyć oprogramowanie (tak to stwierdzenie jest prowokacyjne :) Nie bierz tego zbyt poważnie).
  • PHPUnit jest aktywnie utrzymywany, stabilny i działa świetnie dla każdej bazy kodowej, każdego scenariusza i każdego sposobu pisania testów.
  • (subiektywny) PHPUnit zapewnia znacznie ładniejszy raport pokrycia kodu niż najprostszy
  • Z PHPUnit dostajesz również te raporty wewnątrz swojego IDE (Netbeans , Eclipse, ...)
  • jest też kilka propozycji na web interface to phpunit tests.
Nie widzę jeszcze żadnego argumentu przemawiającego za prostotą. Nie jest to nawet prostsze do zainstalowania, ponieważ PHPUnit jest dostępny za pośrednictwem pear:
pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

I "pierwszy test" wygląda prawie tak samo.

Od PHPUnit 3.7 jest to jeszcze łatwiej zainstalować po prostu używając PHAR Archive

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar

Lub dla windows po prostu pobieranie phar i przebieg:

php phpunit-.phar

Lub podczas korzystania z wspieranej instalacji composera , takich jak

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}
Do twojego kompozytora.json.

Za wszystko, co chcesz przetestować PHPUnit będzie miał rozwiązanie i będziesz mógł znaleźć pomoc praktycznie wszędzie (tak, kanał irc # phpunit na freenode, prawie każdy programista php;))

Proszę mnie poprawić, jeśli coś źle stwierdziłem lub o czymś zapomniałem:)

Przegląd narzędzi do testowania PHP

Wideo: http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/

Slajdy: http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011

Wspomina o rzeczach takich jak Atoum , który nazywa siebie: "prosty, nowoczesny i intuicyjny framework do testowania jednostek dla PHP!"


Pełne ujawnienie

Napisałem oryginalnie tę odpowiedź Jan. 2011, gdzie nie miałem powiązania z żadnym projektem testującym PHP. Od tego czasu został współpracownikiem PHPUnit.

 87
Author: edorian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:31

Wolę teraz PHPUnit, ale kiedy zaczynałem używałem SimpleTest, ponieważ nie zawsze miałem dostęp do wiersza poleceń. SimpleTest jest ładny, ale jedyną rzeczą, która naprawdę ma nad PHPUnit, moim zdaniem, jest Web runner.

Powodem, dla którego lubię PHPUnit jest to, że integruje się z innymi narzędziami programistycznymi PHP, takimi jak phing (podobnie jak SimpleTest), phpUnderControl i Xinc. Od wersji 3.0 ma wsparcie, jest aktywnie rozwijany, a dokumentacja jest doskonała.

Naprawdę jedynym sposobem, aby odpowiedzieć na to pytanie dla siebie jest wypróbować oba na jakiś czas, i zobaczyć, który pasuje do Twojego stylu lepiej.

EDIT: Phing teraz integruje się również z SimpleTest.

 34
Author: Eric Scrivner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-01 22:30:14
  • nie mogłem zrozumieć, jak pobrać i zainstalować PHPUnit.
  • Mogłem jednak łatwo zrozumieć, jak zainstalować SimpleTest.

    (o ile pamiętam instrukcje do PHPUnit mówiły coś w stylu "zainstaluj go przez PEAR i nie podamy żadnych instrukcji, Jak to zrobić w inny sposób") zobacz:

  • http://www.phpunit.de/manual/current/en/installation.html

For SimpleTest , just pobierz go i wskaż na niego z kodu.

So Simpletest wygrał dla mnie.

 17
Author: stfan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-18 03:34:05

Baphled ma fajny artykuł na temat SimpleTest vs PHPUnit3.

 12
Author: neu242,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-02 13:41:21

Połowa wymienionych punktów w zaakceptowanej odpowiedzi jest po prostu nieprawdziwa:

SimpleTest ma

  • łatwiejsza konfiguracja (rozpakuj do folderu, Dołącz i uruchom)
  • po prostu sprawdź folder w kontroli wersji (spróbuj to zrobić teraz z phpunit:))
  • mniej zależności i wiele rozszerzeń (webtester, formtester, auth)
  • dobry reporter pokrycia kodu, który jest łatwy do rozszerzenia (kropki, nazwy funkcji, kolory)
  • podsumowanie pokrycia kodu (wreszcie wylądował w PHPUnit 4.x)
  • W przeciwieństwie do ajax, Web runner nie jest w pełni funkcjonalny i nie jest w pełni funkcjonalny.]}
  • jeszcze lepsze narzędzie diff (bez problemów ze spacjami i nową linią)
  • adapter/wrapper do uruchamiania Simpletestów przez phpUnit i odwrotnie
  • jest aktywnie utrzymywana na Githubie: https://github.com/simpletest
  • zgodność PHP5. 4 +

Minusy:

  • not industry standard (PHPUnit)
 11
Author: Jens A. Koch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-22 15:59:53

Okazało się, że SimpleTest jest jeszcze łatwiejszy niż PHPUnit do skonfigurowania. Po prostu go wyciągnij i możesz iść. Zaletą tego jest to, że pracujesz na więcej niż jednej maszynie, ponieważ możesz przechowywać cały framework testowy w taki sam sposób, jak Twój kod źródłowy, a tym samym wiedzieć, że używasz tego samego kodu frameworku. Zwłaszcza jeśli zmodyfikujesz go w jakikolwiek sposób.

Więc powiedziałbym, że siłą SimpleTest jest to, że jest bardzo lekki i przenośny.

SimpleTest również statki z bardzo prosty HTML GUI, który jest dość łatwy do rozszerzenia, jeśli chcesz. O ile wiem, PHPUnit nie zawiera GUI HTML, ale są GUI: s dostępne do pobrania, takie jak Cool .

 7
Author: Erik Öjebo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-29 10:34:51

Dobrze zrobiłem PHPUnit web based UI test case runner i udostępnił go na sourceforge. Używa ajax i ma całkiem fajny interfejs, jak również jeśli chcesz dać mu szansę sprawdzić go w sourceforge. Nazwa projektu to phpunitwebui, a strona to http://phpunitwebui.sourceforge.net/

 7
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-16 23:03:34

Jak już wspomniano, jest to głównie wybór preferencji, ponieważ oba będą uruchamiać testy, które dla niego piszesz i raportować wyniki.

Najprostszy interfejs WWW jest bardzo przydatny, ale czasami może być uciążliwy. W moim obecnym projekcie musiałbym włożyć więcej pracy w system, aby moja aplikacja (API) działała z interfejsem WWW (poprawnie skonfigurować apache, skopiować pliki do katalogu głównego public_html, itp.) niż byłoby po prostu uruchomić phpunit z eclipse miejsce pracy. Dlatego wybieram PHPUnit. Ponadto korzystanie z PEAR było dużym plusem, ponieważ nie trzeba ręcznie śledzić aktualizacji. Po prostu uruchom pear upgrade raz na jakiś czas, a PHPUnit będzie na bieżąco.

 3
Author: T0xicCode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-26 17:38:56

Nie sprawdzałem Simple Test przez jakiś czas, ostatnio miał wtyczkę eclipse, co jest dla mnie głównym czynnikiem, ale nie był aktualizowany przez długi czas. Sebastian Bergmann nadal bardzo aktywnie pracuje nad PHPUnit, ale wciąż brakuje mu dobrej wtyczki do eclipse - ale jest ona dołączona do nowego studia Zend.

 1
Author: FrankS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-29 10:38:51

To pytanie jest stare, ale chcę dodać moje doświadczenie: PHPUnit wydaje się być teraz standardem, ale jeśli pracujesz ze starszym systemem, który używa wielu zmiennych globalnych, możesz utknąć od samego początku. Wygląda na to, że nie ma dobrego sposobu na testowanie globalnych zmiennych w PHPUnit, wydaje się, że musisz ustawić swoje zmienne za pomocą $GLOBALS, co nie jest dobre, jeśli masz mnóstwo plików ustawiających globalne zmienne wszędzie. OK niektórzy mogą powiedzieć, że problem jest w starszym systemie, ale to nie oznacza to, że nie możemy przeprowadzać testów na takim systemie. Z SimpleTest takie rzeczy jest proste. Przypuszczam, że jeśli PHPUnit pozwala nam dołączyć plik globalnie, a nie w ramach żadnej klasy / zakresu funkcji, to nie byłoby to zbyt dużym problemem.

Innym obiecującym rozwiązaniem jest http://www.enhance-php.com , ładnie wygląda:)

 1
Author: mr1031011,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-15 16:59:38

To z punktu widzenia bardzo przypadkowego programisty PHP:

Zajęło mi dwa dni opanowanie PHPUnit, głównie próbując debugować pod Eclipse, z którego ostatecznie zrezygnowałem.

Dwie godziny Zajęło mi skonfigurowanie Simpletest włącznie z debugowaniem pod Eclipse.

Może znajdę braki Simpletest w przyszłości, ale jak na razie robi to, czego potrzebuję: klasy testowe, Mock objects, debugowanie kodu testowego i interfejs WWW do szybkiego ujęcia sytuacji.

Again: to z punktu widzenia bardzo przypadkowego użytkownika PHP (nawet nie developera : -)

 1
Author: tru7,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-30 18:09:53

Gdy istnieją tysiące funkcji do przetestowania za jednym zamachem, phpunit jest droga do zrobienia, prosty test jest krótki, ponieważ opiera się na sieci.

Nadal używam simple web to do testów na małą skalę .

Ale oba są dobre

 -2
Author: user5454174,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-16 14:19:42