[英]how to run integration test for a web application with intellij and maven
[英]Best approach to integration test a Flex/Java web application via Maven?
我正在開發一個項目,該項目正在開發一個具有100%Flex UI的webapp,它通過Blaze與在應用服務器上運行的Java后端進行通信。 該團隊已經創建了許多單元測試,但只為持久性模塊創建了集成測試。 現在我們想知道集成測試其他部分的最佳方法。 以下是我們現在擁有的Maven模塊,我相信這是一個非常典型的設計:
服務器端:
1)Java域模塊 - 這只有單元測試
2)Java持久性模塊(DAO) - 現在這只有集成測試,它與實時數據庫通信以測試DAO,這里沒有真正的單元測試
3)Java服務模塊 - 現在這只有單元測試
客戶端:
4)一個Flex服務模塊,打包為SWC並與Java后端通信 - 目前根本沒有測試
5)Flex客戶端模塊,在Flex服務模塊之上實現Flex UI - 目前只有單元測試(我們使用MATE創建一個松散的客戶端,視圖中沒有邏輯)。
這5個模塊打包成WAR,可以部署在應用程序服務器或servlet容器中。
以下是我提出的4個問題:
非常感謝任何幫助/意見!
更多的暗示而非強烈的答案,但可能會看看fluint (以前的dpUInt )和與Maven,Flex,Fliunt和Hudson博客文章的持續集成 。
首先,只是一些澄清。 當您說“4)Flex服務模塊打包為SWC”時,您的意思是我收集的Flex服務庫作為RSL加載。 將服務作為運行時模塊編寫是一個重要的區別,因為后者可以(並且通常會)實例化服務控制器本身並將服務連接分發給其他模塊。 您的替代方案,只是您構建到每個模塊中的庫意味着它們都創建自己的服務控制器實例。 最好將服務邏輯放入一個模塊中,應用程序可以在其他模塊加載之前加載該模塊,並管理服務之間的服務移動。
例如。
Application.swf - 啟動,初始化IoC容器,加載Services.swf,注入它需要的任何依賴項
Services.swf加載,建立與服務器的連接,管理所需的服務集合
Application.swf將Services.swf中的托管實例添加到其容器中(使用某種形式的上下文感知以防止沖突)
Application.swf加載ModuleA.swf,注入它需要的任何依賴項
ModuleA.swf加載(具有來自Services.swf注入的依賴項),使用這些依賴項來聯系它所需的服務。
也就是說,堅持你目前的結構,我會盡可能准確地回答你的問題。
您希望在集成中測試什么? 您的服務在那里並返回您期望我收集的內容。 因此,如果在BlazeDS中使用遠程對象,那么您可以編寫測試以確保您可以找到端點,可以找到通道,目標存在,所有遠程方法都按預期返回。 服務器團隊正在測試數據存儲(從它們到數據庫並返回),但是您正在測試客戶端和服務器之間的合同是否仍然存在。 此合約適用於任何假設 - 例如在有效負載上返回的值對象,存在的遠程方法等等。
(參見下面的#4)測試應該在他們的模塊中,但是我會在這里說你真的應該有一個模塊來做服務(而不是我上面提到的庫)。 無論如何,是的仍然將測試工件部署到本地Web服務器(使用Jetty或其他類似工具)並確保集成測試目標取決於您使用的WAR打包器。
我發現一些開發人員將UI /功能測試與集成測試相互交換。 雖然您確實可以將兩者結合起來,但在Flex中仍然存在自動集成測試的空間,其中加載了Web服務器並檢查核心服務以確保它們存在並返回所需的內容。 對於UI /功能測試,Adobe保留了大量資源: http : //www.adobe.com/products/flex/related/#ftesting 。 對於我提到的集成測試,
集成測試應該有自己的目標,這取決於打包的WAR項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.