我是一個Web開發人員,最終在一些Java EE開發(Richfaces,Seam 2,EJB 3.1,JPA)中工作。要測試JPA,我使用超音速和Mockito。但是我缺乏更深入的EJB知識。在TDD中,爲什麼要使用OpenEJB以及爲什麼使用Arquillian?
有人可能會爭辯說,我們應該使用OpenEJB和Arquillian,但爲什麼? 我什麼時候需要做容器依賴性測試?我需要OpenEJB和Arquillian的可能測試場景是什麼?
請賜教:)
我是一個Web開發人員,最終在一些Java EE開發(Richfaces,Seam 2,EJB 3.1,JPA)中工作。要測試JPA,我使用超音速和Mockito。但是我缺乏更深入的EJB知識。在TDD中,爲什麼要使用OpenEJB以及爲什麼使用Arquillian?
有人可能會爭辯說,我們應該使用OpenEJB和Arquillian,但爲什麼? 我什麼時候需要做容器依賴性測試?我需要OpenEJB和Arquillian的可能測試場景是什麼?
請賜教:)
在這種情況下有兩個方面。
你嘲笑這整個環境,只是單獨測試每種方法。 單元測試細化爲,速度非常快。這是因爲您可以在每次對代碼進行重要更改時執行它們。如果它們更加複雜和耗時,開發者不會像他應該那樣頻繁地點擊'測試'按鈕。
正如你看到的,集成測試是粗粒度和他們在容器正在執行(或基本上是:在生產環境中)他們要慢得多。這些測試通常不會在每次代碼更改後由開發人員執行。
當然,您可以在嵌入模式下運行EJB容器,就像您可以在Java SE中執行JPA一樣。重點在於人工環境爲您提供了基本的服務,但您將以調整爲結束,並且仍然以比實際容器更少的靈活性結束。
Arquillian使您能夠在您選擇的容器上創建生產環境,並在此環境中執行測試(使用數據源,JMS目標以及您期望在生產環境中看到的大量其他配置)。 )
希望它有幫助。
今年我參加了Devoxx,並有機會回答JBOSS問題。 一些測試場景(我所管理的東西塗抹下):
謝謝,perf等答案。 JMS部分對我來說尤其有趣。 –
很高興我可以有任何幫助:-) –
良好的寫作。我很好奇「關鍵在於人爲環境給你提供的基本服務,但你最終會調整它,並且仍然以比實際容器更少的靈活性結束」的意思是。 EJBContainer API背後的想法是,您正在使用真正的EJB容器。遵守或行爲不應有任何差異。 –