2013-12-18 3 views
5

Ich verwende EJB 3.0, Oracle WebLogic.Wie kann ich EJB 3.0 testen?

Benötigen Sie in der folgenden Fragen helfen:

Wie EJB zu testen (3.0)? Ich meine Komponententests und/oder Integrationstests? Kann ich einen eingebetteten EJB-Container verwenden oder einen Mock erstellen, um Komponententests zu schreiben? Vielleicht gibt es spezielle Test-Frameworks oder Approaches? EJB sind nicht neu für mich, aber ich habe nie Tests für sie geschrieben. Alle Informationen werden für mich nützlich sein.

Danke.

Antwort

6

Eine Option verwendet einen eingebetteten Container. Startet bei jeder Testausführung, Sie müssen Ihre Beans durch jndi nachschlagen, die Containerkonfiguration selbst verwalten und alle möglichen langweiligen, unproduktiven Sachen.

Auf der anderen Seite gibt es Frameworks wie Arquillian, die die Sache für Sie tun. Es unterstützt Anmerkungen wie @EJB in Tests und macht DI, verwaltet Container .... Lesen Sie den Leitfaden auf ihrer Website, es lohnt sich.

Aus meiner Erfahrung sind Mocks eine nicht gute Lösung für komplexe EJB-Tests, auch wenn einige nichtcontainerabhängige Funktionen getestet werden.

Mein Ratschlag geht mit Arquillian.

+0

Das ist eine gute Idee. Ich habe von Arquillian gehört, wusste aber nicht, dass es für EJB-Tests verwendet werden kann. Danke – john

+1

Gosh ja, es kann EJBs testen - http://arquillian.org/guides/getting_started_rinse_and_repeat/ – HankCa

1

Ein eingebetteter EJB-Container, der in Junit-Tests verwendet wird, ist eine gute Idee, um Ihre Dienste zu testen & ejbs.

Mit open-ejb (oder einem anderen eingebetteten Container wie Glassfish etc.) können Sie einfache Tests mit junit als Framework schreiben. Sogar JPA ist sehr gut integriert und verwendet eine Speicherdatenbank.

Wenn es darum geht, zu spotten, sagen wir für Remote-Dienste, können Sie immer noch Mockito innerhalb verwenden.

finden einige dokumentiert & runnable Beispiele hier: https://tomee.apache.org/examples-trunk/

+0

Ein Link zu bestimmten Beispielen zum Testen wäre besser als eine Liste von Beispielen für jede einzelne Sache, zu der TomEE fähig ist. – meustrus

2

ich versuchen würde, schlicht junit und Mockito so viel wie möglich zu verwenden, um kleine Einheiten von Code zu testen und Embedded-Container verwenden nur für Integrationstests, da diese Art von Tests viel länger als einfache Unit Tests. Und für Entwickler, die das Gerät laufen lassen, sollten Tests nie nervig werden.