Avvio di un nuovo progetto utilizzando EJB 3/JPA, principalmente bean di sessione senza stato e processi batch. In passato ho usato JUnit su webapp Java standard e sembrava funzionare abbastanza bene. In EJB2 il test delle unità era un problema e richiedeva un contenitore funzionante come JBoss per effettuare le chiamate. Ora che lavoreremo su EJB3/JPA, vorrei sapere quali sono le aziende che utilizzano per scrivere ed eseguire questi test. Junit e JMock sono ancora considerati rilevanti o ci sono altri quadri più recenti che sono stati oggetto di indagine?Miglior quadro corrente per test di unità EJB3/JPA
risposta
IMHO, sì sono ancora rilevanti.
Con EJB3, è possibile testare l'EJB come POJO normale o come bean gestito utilizzando un contenitore EJB incorporato.
Uguale per JPA, è possibile incorporare un'implementazione JPA per il test e utilizzare un database in memoria, oppure è possibile simulare completamente il livello dati.
Per il mio ultimo progetto EJB avevo scritto un po 'di glue code per testare l'EJB container EJB perché incorporato non sono stati sufficientemente matura, ma ora vorrei andare per un contenitore EJB incorporato + JUnit.
alcune risorse
- post del blog: How to unit test EJB 3 in 0.8 seconds
- SO domanda: Good unit testing resource for EJB
Ma ci sono molti altri facilmente trovabili
Per Unit Testing, è possibile utilizzare JUnit, TestNG e il vostro quadro preferito beffardo (EasyMock, Mockito, PowerMock, JMockit, JMock).
Per test di integrazione, si potrebbe avviare/fermare un contenitore embeddable (JBoss, OpenEJB, GlassFish v3) dai test. Oppure, dare un'occhiata a Arquillian, un recentissimo nuovo giocatore per il test di integrazione di applicazioni Java EE:
La missione del progetto Arquillian è quello di fornire un semplice test harness che gli sviluppatori possono utilizzare per la produzione di una vasta gamma di test di integrazione per le loro applicazioni Java (molto probabilmente applicazioni aziendali). Un test case può essere eseguito all'interno del contenitore, implementato insieme al codice sotto test o coordinato con il contenitore, in qualità di client per il codice distribuito.
Per evitare l'inutile complessità nell'ambiente di sviluppo dello sviluppatore, Arquillian si integra in modo trasparente con framework di test familiari (ad esempio JUnit 4, TestNG 5), consentendo di eseguire test utilizzando plug-in di test IDE, Ant e Maven esistenti senza alcun componente aggiuntivo .
Controllare anche Improving the Testability of Java EE With Arquillian 1.0.0 Alpha 1 Released e lo spazio Arquillan. Sembra interessante IMO.
Un'opzione è anche l'utilizzo di Spring, ma ovviamente l'architettura sarà basata anche su Spring in fase di esecuzione. La ragione per cui mi piace primavera è che è facile da iniettare quali dati mai finto e gli oggetti sono necessari in fase di collaudo, come si può annotare nel caso di test JUnit che file di contesto da utilizzare:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:test-context.xml"})
public class MyClassTest {
@Autowired
private MyClass myClass;
@Test
public void testMyMethod() {....}
Ma se don Voglio comunque usare Spring, quindi questo è abbastanza irrilevante :) D'altra parte, è molto facile passare da Spring in poi.
Suggerirei Arquillian. Con Arquillian avete le opzioni per testare normali EJB o bean CDI. È possibile eseguire nuovamente il test su un contenitore EE integrato, gestito o remoto. Il progetto Arquillian è continuamente aggiornato ...
Tuttavia non è sempre così facile eseguire il primo test arquilliano. Potresti avere problemi nel trovare le dipendenze per la versione arquilliana e la versione del contenitore corrette. Ho pubblicato un tutorial seriale su questo. Ma per non farmi sospettare di promuovere, il link non è pubblicato qui. Se ti piace, puoi semplicemente google "Tutorial EJB3 Test di integrazione con Arquillian part1".
- 1. Il miglior strumento per il test delle unità in MySQL
- 2. Quadro di isolamento per test per Mono
- 3. Test unità di base e test unità
- 4. Quadro di test unitario per C: Confronto
- 5. Unità IoC quadro con predefinito costruttore
- 6. Test delle unità per progetti iOS
- 7. Gestione dei test delle unità con una condizione sull'ora corrente
- 8. Quadro di test per test funzionali/di sistema per C/C++?
- 9. Come eseguire un singolo test contesto shoulda in Ruby Test :: quadro Unità
- 10. Quadro di test di integrazione multi-lingua
- 11. Test unità per eccezioni interne
- 12. Test di unità per script di shell
- 13. installatori di test unità
- 14. Unità regole di test
- 15. (unità) Test di ArrayAdapter
- 16. ruby Test :: Unità Opzioni riga di comando?
- 17. Test di unità per progetto Euler
- 18. Test di unità MVVM WPF per ViewModel?
- 19. stesso test di unità per diverse implementazioni
- 20. framework di test unità per C
- 21. Linee guida per unità di migliori test
- 22. entità unità quadro + repository + o domanda
- 23. Quadro di prova di Google - Dipendenza tra casi di test
- 24. Test unità separati e test di integrazione
- 25. SQLite.Interop.dll bloccato dopo che eseguono Visual Studio 2012 Unità quadro di prova test
- 26. Singleton e unità di test
- 27. Test di integrazione e unità
- 28. Test di unità non visualizzati
- 29. Test unità JSF
- 30. Unità Test Architettura Domanda