2009-09-29 29 views
6

Szukam sposobu zastosowania TDD do ziaren sesyjnych.Jednostka testująca EJB

Czy ktoś może udzielać porad i linków, jak je testować?

jak używać JUnit do tego?

P.S: Jestem nowy w testowaniu napędzanego rozwoju i ziaren sesyjnych.

Używam EJB v2.

Odpowiedz

8

Zakładam, że mówisz o ziarnach sesji EJB2.x. W przypadku tych zwierząt najbardziej lubię:

  • Sezonu sesyjnego jako opakowania, które po prostu przekazuje logikę do POJO, które można przetestować z łatwością poza pojemnikiem. Testy pojemnik na zewnątrz jest lepiej, szybciej, łatwiej, etc, ale nie obejmie takie rzeczy jak sprawdzanie poprawności deskryptora wdrażania - i/lub -
  • Zastosowanie coś Cactus celu wykonania analizy w pojemniku (sprawdzić dokumentację Howto EJB) - i/lub -
  • Utwórz i zainstaluj swój moduł EJB pod numerem Cargo do testów integracyjnych.
+0

+1 - Dla dwóch ostatnich propozycji, nie myślałem o Cactus lat.:) –

+0

Właściwie nie korzystałem z Cactus od lat :) –

+0

Próbowałem skonfigurować Cactus do użytku, ale tak naprawdę go nie dostaję! Czuję, że to zbyt trudne do skonfigurowania. Używam Eclipse i NetBeans. – Attilah

5

Nie mówisz, której wersji EJB używasz. Jeśli to EJB v3, sprawdź numer Ejb3Unit. Ze strony:

Ejb3Unit jest rozbudowa JUnit i może wykonywać zautomatyzowanych Samodzielny JUnit testy dla wszystkich EJB 3.0 zgodne Java EE projektów. Metoda testowania poza pojemnikiem prowadzi do krótkich cykli testów kompilacji, , ponieważ nie jest już konieczne wdrożenie kontenera .

Jednak zalecałbym oddzielenie funkcjonalności od specyfiki EJB. Umożliwi to przetestowanie złożonej funkcjonalności poza kontenerem i bez korzystania z frameworków takich jak powyższe. Większość twoich testów testowałaby POJO (zwykłe stare obiekty Javy), a stosunkowo niewiele skupiałoby się na testowaniu ram utrzymywania.

EDYCJA: Więc jeśli używasz EJB v2, to oczywiście zignoruj ​​pierwszy punkt. Drugi punkt pozostaje jednak ważny.

2

Obecnie używam apache openejb jako osadzonego kontenera do testów jednostkowych. Chociaż jest to projekt EJB3/JPA, powinien działać tak samo dla EJB2. Załadowania kontenera w badaniach po prostu trzeba utworzyć obiekt InitialContext które można później użyć do wyszukiwania EJBs i DataSources:

Properties props = new Properties(); 
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory"); 

// a DataSource named "mysql" 
props.put("mysql", "new://Resource?type=DataSource"); 
props.put("mysql.JdbcDriver", "com.mysql.jdbc.Driver"); 
props.put("mysql.JdbcUrl", "jdbc:mysql://localhost:3306"); 
props.put("mysql.JtaManaged", "true"); 
props.put("mysql.DefaultAutoCommit", "false"); 
props.put("mysql.UserName", "root"); 
props.put("mysql.Password", "root"); 

Context context = new InitialContext(props); 
LocalInterface local = (LocalInterface)context.lookup(localInterfaceName + "BeanLocal"); 
DataSource ds = (DataSource)context.lookup("java:openejb/Resource/mysql"); 

Edycja: Istnieje kilka dokumentacji w sekcji „technik testowania” na http://openejb.apache.org/3.0/index.html.

+0

czy możesz podać link do dobrego samouczka na ten temat? wydaje się obiecujący. – Attilah

Powiązane problemy