gpt4 book ai didi

c# - 使用 MessageBox 对函数进行单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 22:47:36 25 4
gpt4 key购买 nike

我有一个带有自定义消息框的功能,例如,

public bool SomeFunction()
{
MessageBoxResult mResult= MessageBox.Show("Displaying message");
bool result;
if(mResult == MessageBoxResult.OK)
{
result = AnyFunction();
}
return result;
}

而且我想为这些方法编写一个不显示消息框的单元测试。有什么办法吗?我正在使用“Microsoft.VisualStudio.TestTools”

最佳答案

这可能是一种方法,使用 moq。这个想法是将真正的消息框实现隐藏在界面后面,然后根据您希望在测试中实现的目标来模拟其行为。

实现

public interface IMessageBox
{
MessageBoxResult Show(string msg);
}

public class SomeClass
{
private readonly IMessageBox _messageBox;

public SomeClass(IMessageBox messageBox)
{
_messageBox = messageBox;
}

public bool SomeFunction()
{
MessageBoxResult mResult = _messageBox.Show("Displaying message");
bool result;
if(mResult == MessageBoxResult.OK)
{
result = AnyFunction();
}
return result;
}
}

单元测试:

Mock<IMessageBox> messageBoxMock = new Mock<IMessageBox>();
messageBoxMock.Setup(m => m.Show(It.IsAny<string>()))
.Returns(MessageBoxResult.OK); //can be whatever depends on test case
SomeClass sut = new SomeClass(messageBoxMock.Object);

关于c# - 使用 MessageBox 对函数进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49146068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com