gpt4 book ai didi

c# - 如何使 Application.Run() 可测试

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

我目前正在为遗留 Windows 窗体应用程序编写系统测试。

在我的测试中,我调用了 Program.Main() 方法,该方法在某个时候又调用了 Application.Run(new MainForm());

有没有办法用我可以控制的东西替换 Application.Run()?

具体来说,我需要能够停止执行并捕获未处理的异常。

最佳答案

您可以修改 Program.Main 以接受表单作为输入参数,默认值为 MainForm。引用类型不能有非空默认值,但我们可以通过使用两个原型(prototype)来完成同样的事情:

class Program
{
//Normal entry point
static public void Main()
{
Main(new MainForm());
}

//Internal & test entry point
static public void Main(Form form)
{
DoSomeSetup();
Application.Run(form);
}
}

当您以正常方式运行程序时,它将使用 MainForm

但是当你从你的测试项目中运行它时,你可以这样调用它:

Program.Main(new FormICanControl());

然后你就可以控制它了。

//Arrange
var t = new TestForm();

//Act
Program.Main(t);
t.ExecuteSomeTest();

//Assert
Assert.AreEqual(t.ResultCode, 0, "Test failed.");

关于c# - 如何使 Application.Run() 可测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45956457/

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