2015-11-05 120 views
0

我已經使用Junit和CI來完成基於Java的純應用程序,這很好用。 Junit用於通過傳遞其輸入值(參數)爲操作/方法單元測試用例,並期望返回值應與條件匹配。通常我們測試一個基於純Java的應用程序的junit,它具有Controller,Service和DAO層。有時使用模擬對象來模擬/代理第三方應用程序。ESB應用程序和持續集成

現在,我必須建立在騾子ESB的應用程序,它是有HTTP連接器,API套件,腎錯構瘤,調度,雲連接到SFDC,ActiveMQ的,SMTP,JDBC連接到多個數據庫,datampaper,datewave並繼續..

最後,Mule應用程序是一個xml文件,集成了Java/Groovy和其他一些技術。 Java組件僅佔應用程序構建組件的10%(或沒有)。

我計劃與詹金斯持續集成。爲此,我需要運行Junit框架來對應用程序進行迴歸測試。我希望Munit不會與CI一起工作,因爲Munit必須用Studio來執行,並且它是用xml文件編寫的。

由於應用程序構建是不完整的基於Java的應用程序(在此我們可以編寫單元測試斷言業務和其返回值)觀察到的問題:

  1. 編寫JUnit的騾子組件正在採取大量的時間比編寫功能,因爲代碼長度更多地獲得Mule xml組件並具有模擬組件。
  2. 我不能有Mule ESB應用程序的100%代碼覆蓋率。我可以在基於Java/Junit的應用程序中使用cobertura或其他工具進行代碼覆蓋。
  3. 而不是花時間在這個單元測試開發人員可以利用時間進行手動測試更穩定的應用程序。

此外,構建ESB應用程序以運行不同的過程以集成在一起。在基於ESB的應用程序中使用CI與Junit是否是很好的體系結構建議?或者在沒有CI和Junit測試的情況下進行手動測試並在服務器中部署應用程序?

+0

嗨,我不確定我完全理解你在問什麼。在我的回答中,我盡力總結了一系列問題並回答了他們。你介意重新審視這些內容,並幫助我糾正它們?一旦我們得到澄清,請爲未來的讀者更新問題。 –

回答

3

您似乎在介紹一些關於實施Mule ESB應用程序持續集成的問題。我會盡量在下面陳述和回答您的每個問題。如果我還沒有理解,請更新問題,我會相應地修改答案。

我的CI過程僅限於基於junit的測試,還是我也可以使用MUnit測試?

如果您使用maven來自動化構建,您可以在CI過程中包含基於MUnit的測試和基於junit的測試。要運行MUnit測試,下面的插件添加到您的POM:

<plugin> 
    <groupId>com.mulesoft.munit.tools</groupId> 
    <artifactId>munit-maven-plugin</artifactId> 
    <version>1.0.0</version> 
    <executions> 
    <execution> 
     <id>test</id> 
     <phase>test</phase> 
     <goals> 
     <goal>test</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

我應該預計花費更多的時間和精力編寫測試的騾子應用比我的純Java應用程序嗎?

我會回答我推薦爲Mule應用程序編寫的兩類測試。

  1. 功能測試
    • 格式:的JUnit與FunctionalTestCase
    • 學習曲線:個月
    • 時間爲初學者需要:比純Java需要
    • 時間更有經驗: simila R鍵純java
  2. 單元測試
    • 格式: MUnit
    • 學習曲線:天需要初學者
    • 時間:有點超過純Java
    • 所需時間與經驗:類似於純java

首先,我認爲最重要的是功能測試。這些應該是粗粒度,黑盒子和孤立的。這些是用JUnit編寫的,基於Mule TCK and the FunctionalTestCase基類。開發這些測試的熟練程度似乎需要一段時間,並且需要在多種不同的應用程序上進行實踐。一旦你掌握了它,並建立了一套你喜歡的支持java庫,我希望這些只要與「純java」中的等價物一樣長。

單元測試大多是使用MUnit編寫的,測試流或子流具有特定的輸入消息。這些似乎與使用junit進行「純java」的開發時間大致相同。學習曲線也相當快:我期望有一個使用TDD的Java開發人員有幾天對Mule開發具有相當的理解。

有什麼方法可以測量我的Mule應用程序測試套件的代碼覆蓋率嗎?

我還沒有看到任何方式來衡量CI過程中的覆蓋範圍。但是,Anypoint Studio can measure coverage正處於開發階段。

考慮到編寫自動化測試所需的時間以及缺乏設計時間重用,花費時間手動測試而不是創建自動化測試套件並實施CI過程會更明智嗎?

不。我已經在許多Mule開發項目和六個團隊中實現了對自動化測試的持續集成,他們並沒有全部採用100%熱情的迴應。 :)您在前幾個項目中花費的額外開發時間很快就會被遺忘,而軟件的使用壽命仍將繼續受益。