2011-05-02 68 views
0

我目前是一個在1年前開始的項目中的新人。該項目使用C#,WPF,PRISM(CAL),實體框架,LINQ等。該應用程序使用MVVM模式完成。WPF - PRISM(CAL) - 自動功能測試

有一些單元測試,但我被要求做功能測試,因爲大部分的錯誤是在將所有組件一起使用時發現的。

我開始製作一個MSTEST項目。我的目標是啓動整個應用程序後端(模型和視圖模型),模擬UI事件並檢查訪問一個或多個viewmodel屬性的模型修改。

我的第一個客人是創建Entity上下文(模型),初始化所有PRISM模塊並開始在視圖模型中發佈事件以修改我的模型並在相同或其他視圖模型中檢查結果。我只好:

  • 覆蓋棱鏡Boostrapper類
  • 創建一個簡單的應用程序(因爲在MSTEST似乎 System.Windows.Application.Current爲空)。我只是從System.Windows.Application派生出一個類。

我可以使用UnityContainer訪問我所有的接口實現。我現在的問題是,IEventAggregator不起作用。事件不會被解僱。我不想嘲笑事件聚合器,因爲我想讓它在棱鏡模塊之間激發我的事件(我正在做功能測試,而不是單元測試)。

我找到了一種方法,通過與DispatcherDispatcherFrame玩,使其工作,但我得到的庫存在RegionManager似乎失敗。

我的問題是:有沒有更好的方式來做我的功能/集成測試,而不必顯示用戶界面?

回答

0

如果您正在進行功能測試,您應該要顯示用戶界面。例如,如果某個UI設計者決定將複選框置於複選框的頂部,並且您不能再點擊該複選框,則需要在功能測試中找到該複選框。

因爲你已經在Visual Studio中編寫了UI測試代碼,所以你會遇到WPF的一些問題,主要是你在編碼UI映射中無法輕易達到的控件。但除此之外,它運行良好,易於構建測試,並與TFS Build Agents和MSBuild很好地集成。

+1

我的應用程序是使用MVVM和PRISM構建的。 MVVM告訴我們邏輯全都在ViewModel中,而不是View中,因此很容易在不顯示View的情況下進行自動化功能測試(只需對ViewModel進行操作即可)。使用PRISM不應該(根據我)使這不可能做! – Nicolas 2011-05-30 12:56:21