2012-03-16 56 views
6

我有一個C#桌面應用程序(CompositUI/WinForms)。此應用程序使用SmartClient連接到Web服務。 我的任務是使用SpecFlow和White框架爲此應用程序引入(改進)測試。爲了測試GUI,我需要模擬web服務調用。連接到它的類正在通過Spring.net注入。 我的任務是測試應用程序能夠在測試過程中模擬Web服務調用,這意味着我的測試代碼需要控制我的模擬將執行的操作。 問題:啓動GUI的方法根本不會將控制權返回給調用它的線程。結果,我們無法控制GUI和模擬。使用SpecFlow,White,Spring和MS Test來測試WinForms/CompositeUI GUI

所以問題我必須在這一點上是:

  • 是可行的(如果是的話 - 如何做到這一點),在單獨的線程啓動GUI,並有控制回測試線程?

  • 什麼是運行GUI測試的其他可能性,這將使我能夠控制注入?

回答

-1

基本測試.NET UI你將不得不使用MVVM工具集或創建一個,所以你可以配置你的解決方案,以測試由UI使用的方法。有許多支持.net的框架可以在Wikipedia上找到。

所有MVVM UI測試的基礎知識都是DI/IOC框架,您還需要選擇它。

本質上你創建一個你可以測試的ViewModel類。以WPF爲例進行單元測試 - http://www.markermetro.com/2010/07/technical/mvvm-light-and-unit-testing-example/

現在有幾個需要思考的問題。首先,.NET WinForms不會因M $(THANKS A BUNCH!)而發生重大變化,而XAML/WPF沒有升級路徑。 MS $表示開發人員應該開始使用WPF UI設計器開展前進的桌面項目。支持WinForms的MVVM框架數量有限,因此您可能需要通過DI推出自己的產品,但請參閱以下有關該主題的StackOverflow討論。其次是.NET窗體到WPF到Windows Phone到Web UI到Metro UI的實現問題。根據Mark Seemann and his Dependency Injection in .NET的書,微軟的P & P團隊爲xaml創建了Prism/WPF具有一些Dependancy Injection反模式(服務定位器是BAD)。棱鏡尚未升級到Metro並重新架構,混淆了採用者並使其部分冗餘。從本質上講,我的觀點是,獲得一個允許應用程序用戶界面前進的框架將會很困難。

+0

這不回答這個問題。他不是在談論單元測試演示邏輯,他實際上想要測試點擊按鈕並在文本框中輸入。如何構建ui(mvvm,MVP,後面的代碼)與那種測試無關。 – Andy 2014-06-18 12:55:23

+0

也支持winforms,但它不會有重大變化。 Wpf將是構建新的桌面應用程序(這些不會消失)和Windows Store應用程序的xaml/winrt或win/js應用程序的首選方式。 – Andy 2014-06-18 12:59:43

+0

@Andy修改回覆澄清技術。 – 2014-08-04 12:12:46