2013-07-08 58 views
1

我正在爲我的WPF C#應用程序編寫NUnit測試代碼。這裏有一些我的方法有MessageBox.Show(「」);,但我們不知道如何在代碼中處理這個。在NUnit測試中處理MessageBox

請通過提供解決方案來幫助我。

感謝,

+0

可能重複(http://stackoverflow.com/questions/ 15663320/WPF的MVVM單元測試 - 和 - 彈出消息盒或 - 對話框) – stijn

回答

5

你可以創造一種MessageBoxService的,你可以在您的測試嗤笑。一個例子代碼:

public class ClassUnderTest 
{ 
    public IMessageBoxService MessageBoxService { get; set; } 

    public void SomeMethod() 
    { 
     //Some logic 

     MessageBoxService.Show("message"); 

     //Some more logic 
    } 
} 

interface IMessageBoxService 
{ 
    void Show(string message); 
} 

public class MessageBoxService : IMessageBoxService 
{ 
    public void Show(string message) 
    { 
     MessageBox.Show(""); 
    } 
} 

然後在您的測試,你可以選擇嘲笑公共財產或創建構造函數傳遞嘲笑實例。 例如,如果你使用起訂量的測試看起來是這樣的:

[Test] 
public void ClassUnderTest_SomeMethod_ExpectsSomtething() 
{ 
    ClassUnderTest testClass = new ClassUnderTest(); 
    testClass.MessageBoxService = new Mock<IMessageBoxService>().Object; 
    //More setup 

    //Action 

    //Assertion 
} 
[WPF和MVVM - 單元測試和彈出消息框或對話框]的