2012-04-18 39 views
4

我目前正在研究如何最好地測試我們準備在Apache Karaf上運行的OSGi應用程序。明顯的選擇是使用labs-paxexam-karaf的Pax考試(教程參見http://iocanel.blogspot.com/2012/01/advanced-integration-testing-with-pax.html)。然而,我對績效表示擔憂(因爲Pax考試顯然爲每種測試方法啓動了一個新框架)。我也發現Arquillian has some OSGi support,雖然這不是它的主要焦點。 JUnit4osgi不是一個選項,因爲它只支持JUnit 3.Arquillian與OSGi(集成)測試的Pax Exam相比如何?

對於不熟悉任何一個框架的人來說,哪一個更好?什麼是權衡?

回答

3

爲什麼使用Arquillian如果你是在正確的OSGi支持之後? =)

當看着PaxExam確保文檔是指PaxExam 2 - 有V1和2

PaxExam之間的巨大差異將需要一段時間才能與交手,但你會學到堆關於OSGi在這個過程中(絕對是件好事,但仍然可能受到傷害)。

與@ Dmytro的回答並行,Test Containers包含一個Native容器,它與junit測試運行時具有相同的VM - 這意味着您可以在Eclipse中使用調試進行啓動。這對org.eclipse.m2e特別適用:生命週期 - 映射maven eclipse插件和org.ops4j.pax.exam:maven-paxexam-plugin。這種方法非常棒,完整的IDE集成。

PaxExam文檔有點稀疏,但有一些good examples(請參閱提供交互式shell的主要方法的本機啓動程序)和wiki doc。如果你遇到郵件列表,人們([email protected])非常有幫助。

另一種選擇是看Karaf's paxexam,非常光滑,容易得到一個Karaf實例啓動和運行(features.xml等)。

就個人而言,我只是使用PaxExam2,因爲我寧願沒有對框架提供程序的明確依賴關係(根本沒有任何反對Karaf的東西,它很有可能)。

+0

你的第一句話仍然有效嗎? Arquillian測試現在不在真正的OSGi容器中運行嗎? – jblack 2014-04-08 19:20:10

3

基於Reactor Strategies Pax-Exam可以在同一個OSGi容器中運行所有測試方法。

2

Pax Exam 2.x(別名爲Pax 3.0中的PerClass)的EagerSingleStagedReactorFactory允許您在同一個OSGi容器中運行給定類的所有測試方法

隨着Pax考試3.0.0.M1中引入的PerSuite策略,全部套件的測試類在同一個容器中運行。

順便說一句,除了OSGi之外,Pax Exam 3.0還支持Java EE和CDI容器,所以與Arquillian有更多的功能相似性,只有Pax Exam來自另一端。

使用Pax考試,不需要在ShrinkWrap樣式中組裝部署,它們是從類路徑自動構建的。而且,您可以使用共享配置運行測試類套件。