1

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

请通过提供解决方案来帮助我。

谢谢,

4

1 回答 1

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("");
    }
}

然后在您的测试中,您可以选择模拟公共属性或创建构造函数来传递模拟实例。例如,如果您使用 Moq,则测试可能如下所示:

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

    //Action

    //Assertion
}
于 2013-07-08T09:55:56.097 回答