2

想知道你是怎么做到的?

因为每次弹出消息框时单击“确定”非常烦人。

4

2 回答 2

2

理想情况下,将消息框设置为依赖项,以便在单元测试期间可以对其进行模拟/存根/伪造,如下所示:

public interface IMessageBox
{
  Show(...);
}

当然,您需要在 MessageBox 包装类中实现该接口。有关 DI 的更多信息:http ://en.wikipedia.org/wiki/Dependency_injection

如果现在无法以这种方式重新设计您的应用程序,您可以尝试这种方法

于 2011-10-06T17:32:45.940 回答
0

理想情况下,您的测试将测试您的业务逻辑。我通常将 MessageBox 视为 UI 组件而不是 UI。这需要修改程序流程,以便错误/异常/验证独立于用户通知发生。IE 依赖于 IDataErrorInfo 而不是属性集上的异常。

在您无法避免并且不想走包装消息框和使用带有 DI 的模拟的路线的情况下,我使用了一种Public Shared Property RunSilent As Boolean = False在我的应用程序中设置单例变量的技术来指示应用程序应该静默运行,然后在调用消息框之前检查该属性以仅在我们不静默运行时显示该框。然后在我的单元测试设置中,将静默标志设置为 true。不理想,但有效。

于 2011-10-06T19:20:18.157 回答