在NUnit测试中处理MessageBox

本文关键字:处理 MessageBox 测试 NUnit | 更新日期: 2023-09-27 18:21:32

我正在为我的WPF C#应用程序编写NUnit测试代码。这里我的一些方法具有MessageBox.Show(");,但我们不知道如何在代码中处理这个问题。

请提供一个解决方案来帮助我。

谢谢,

在NUnit测试中处理MessageBox

您可以创建一种可以在测试中模拟的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("");
    }
}

然后在测试中,您可以选择模拟公共属性,或者创建构造函数来传递模拟的实例。例如,如果你使用Moq,测试可能看起来像这样:

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