Ich arbeite an einer Java EE 6-Anwendung. Als ich anfing, schrieb ich Tests für meine EJB-Klassen, indem ich das EJB manuell instantiierte und dann manuell die Mitglieder hinzufügte, die normalerweise durch die Abhängigkeitsinjektion bereitgestellt werden. Als die Anwendung komplizierter wird, finde ich, dass dieser Ansatz es nicht einfach macht. Daher möchte ich meinen eigenen EJB-Container im Testframework starten können, damit er meine Beans verwalten kann. Was ist der beste Weg, um dies zu erreichen? Ich habe von javax.ejb.embeddable.EJBContainer
gehört, gibt es andere Optionen?EJB-Teststrategien?
(Ich bin mit Glassfish 3 und Gebäuden mit Maven, wenn das einen Unterschied macht.)
Offensichtlich ist das Testen von POJOs einfacher. Aber ich kann nicht die ganze Logik aus meinen EJBs in freistehende Klassen verschieben - wenn ich das tun könnte, würde ich überhaupt keine EJBs benutzen. Als EJB-Client gegen einen laufenden Container zu agieren, ist eine gute Beschreibung dessen, was ich versuche zu tun. Ich versuche nur, den besten Weg herauszufinden, dies zu erreichen. –
Ich denke, Sie hatten Recht, die bereitgestellte Anwendung zu testen. Ich habe versucht, EJBContainer für mich arbeiten zu lassen (mit glassfish-embedded als Implementierung), bin durch viele Reifen gesprungen, um Ausdauerarbeit zu leisten, und habe dann endlich aufgehört, als ich merkte, dass ein EJB-Timer-Dienst (an dem meine App hängt) wurde nicht zur Verfügung gestellt. Ich erkannte, dass selbst wenn es mir gelingen würde, eine Art Engine für meine EJBs einzurichten, sie würde niemals ALLE Bedingungen in einem echten Container replizieren, also wäre es ein nutzloser Test. –
'Denken Sie daran, es gibt keine Regel, die besagt, dass automatisierte Komponententests kein laufendes System erfordern können. Nun, eigentlich gibt es Regeln und solche Tests sind keine Komponententests, per Definition :) –