2012-02-15 58 views
2

我正在編寫複雜的應用程序,其中是服務器和客戶端應用程序,如果我想在我的應用程序中添加一些新窗口,我需要運行服務器,然後運行客戶端,然後登錄點擊幾個按鈕,然後到達我現在正在開發的窗口,這很煩人,需要很多時間。所以現在我正在尋找一些解決方案,我可以運行測試,只能使用模擬服務運行我的wpf表單(所以我不需要運行服務器,不需要登錄),可以點擊或觸發事件並檢查控件出現並按我想要的方式行事。 在這種情況下,我可以節省大量的時間,因爲當我試圖通過運行整個應用程序來實現我的表單時,我不需要浪費時間,因爲我需要使用登錄,搜索繞過一些驗證表單等。 如果已經很簡單解決方案然後它會很好。如何測試WPF表單?

回答

0

你使用任何類型的dependency injection?這很容易,如果是這樣,你可以簡單地使用mocking framework#if-else directives的組合來創建假的版本。某處在您的應用程序啓動代碼:

ILoginService service; 

#if DEBUG 
    service = A.Fake<ILoginService>(); 
    // you could even set up your fakes to return logged user to 
    // automate logging in process: 
    var userFake = A.Fake<IUser>(); 
    A.CallTo(() => service.LogIn(A<string>.Ignored)).Returns(userFake); 
#else 
    service = new RealLoginService(); 
#endif 

var myWindow = new MyWindow(); 
var viewModel = new ViewModel(service); 
myWindow.DataContext = viewModel; 

// ... 

所有你需要的是ViewModel(假設你使用這樣的)能夠採取ILoginService依賴。然後你可以根據自己的喜好嘲笑/僞造它。