Jak testować kod Java EE?

Chcę zapytać o preferowany sposób testowania kodu Java EE?

Znalazłem tylko trzy projekty, które próbują pomóc w kodowaniu testów jednostkowych w środowisku Java EE:

Tak się zastanawiam,

  • czy jest jakiś framework pomagający aby napisać (j) test jednostkowy dla kodu Java EE?
  • czy używasz wbudowanych serwerów Java EE, takich jak jboss lub glassfish v3?
  • czy robisz makietę i wstrzykujesz sama?

Wielkie dzięki...

Author: Blaise Doughan, 2009-12-22

4 answers

Jeśli przez testy jednostkowe masz na myśli... Testowanie jednostek (testowanie jednostki w izolacji), to w rzeczywistości nie potrzebujesz żadnego konkretnego frameworka, ponieważ EJB3. 0 to nic więcej niż adnotowane Pojo, a zatem można je stosunkowo łatwo przetestować bez specjalnego urządzenia.

Teraz, jeśli masz na myśli coś innego - jak testy integracyjne lub testy funkcjonalne - to tak, narzędzia mogą pomóc i uprościć sprawy (ale naprawdę powinieneś zacząć używać odpowiedniej terminologii :) Zakładam, że to właśnie masz na myśli.

Po pierwsze, JUnitEE wydaje się martwy i przestarzały i nie jestem nawet pewien, czy ma coś do EJB3.x. Po drugie, nie jestem pod wrażeniem obsługi Java EE 5 z Cactus i konieczności wdrożenia testów Cactus jest bolesne (myślę, że Cactus był miły dla J2EE 1.4, ale jest teraz trochę przestarzały). Więc to pozostawia nam Ejb3Unit co jest moim zdaniem najlepszą opcją, zwłaszcza jeśli chcesz uruchomić z container testuje tzn. bez realnego wdrażania aplikacji (znacznie szybciej).

Jeśli chcesz uruchomić w testach kontenera, to rzeczywiście możesz użyć wbudowanego kontenera i moje obecne preferencje idą do GlassFish v3, nawet dla Java EE 5 (mogę się mylić, ale jestem dość rozczarowany czasem uruchamiania najnowszych wydań Jbossa, więc nie przyciąga to mojej uwagi). Zobacz post GlassFish Embedded Reloaded, serwer aplikacji w Twojej kieszeni dla przykładowego kodu (które możesz użyć z testów) lub używając wtyczki maven dla wbudowanego glassfish v3 (Jeśli używasz Mavena).

Inną opcją byłoby spakowanie i wdrożenie aplikacji za pomocą Cargo , a następnie przeprowadzenie testów na wdrożonej aplikacji (na przykład za pomocą Selenium lub narzędzia BDD). Może to być przydatne, jeśli chcesz uruchamiać testy end-to-end z kontenerem, który nie zawiera żadnego wbudowanego API.

Więc, aby odpowiedzieć na twoje ostatnie pytanie, rzeczywiście użyłbym dostępne narzędzia, być może ich kombinacja, do testów, które nie są testami jednostkowymi i nie zrobiłyby z siebie maki/wstrzyknięć, chyba że nie pokrywają niektórych potrzeb, o których nie mogę teraz myśleć.

 24
Author: Pascal Thivent,
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-07-29 01:10:39

Jako, że jesteś zainteresowany testami jednostkowymi, polecam JUnit. Możesz przetestować metody w klasach podstawowych. Jeśli masz trudności w pisaniu przypadków testów jednostkowych za pomocą JUnit, to prawdopodobnie konstrukcja nie jest modułowa i jest wysoce sprzężona. Najpierw skup się na podstawowej funkcjonalności i przetestuj ją za pomocą JUnit.

 2
Author: Sundar,
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-12-23 06:53:03

Borykałem się z tym samym problemem uruchamiania testów integracyjnych bazujących na JUnit w kontenerze Java EE 6 (dokładniej Glassfish v3), i po wielu przeglądaniach i poszukiwaniach nie mogłem znaleźć rozwiązania, które naprawdę odpowiadałoby moim potrzebom, więc napisałem własne, teraz opublikowane jako jeeunit na Google Code.

Nie nazwałbym tego frameworkiem testowym, to tak naprawdę tylko garstka klas dostarczających kleju pomiędzy JUnit i Embedded Glassfish.

Ogólna idea jest podobna do Cactus, twoje testy są uruchamiane w kontenerze i uruchamiane przez serwlet z zewnątrz.

Jeeunit obsługuje JUnit 4, Glassfish v3, CDI i generuje standardowe raporty JUnit XML, podobnie jak Ant lub Maven Surefire (w rzeczywistości użyłem kodu z Ant do generowania raportów).

 2
Author: Harald Wellmann,
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-05-11 18:40:45

Miałem obowiązek przetestować aplikację CDI i napisałem Niestandardowy JUnit runner, który uruchamia wszystko poza kontenerem internetowym.

Http://jglue.org/cdi-unit/

Jest odpowiedni dla Java SE, a także obsługuje zakresy fałszywych żądań, sesji i rozmów do testowania aplikacji internetowych.

Jest mały i szybki, co jest świetne, gdy masz wiele testów jednostkowych.

 2
Author: Bryn,
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-11-18 23:25:11