如何在 MSTest 项目的 TestMethod 中测试 Program.Main

问题描述

到目前为止,我有一个简单的测试方法,只是为了在 netcore mvc 应用程序上调用 Program.cs 中的静态方法 Main。

我的断言从未被命中,即使在 5 或 10 分钟之后,测试也会在测试资源管理器中继续运行。是因为程序需要终止还是我的测试错误

感谢建议

谢谢 罗布

[TestClass]
public class ProgramTests
{
    [TestMethod]
    public void ExecMain()
    {
       var args = new string[] { };

       Program.Main(args);

       // never hits test condition and test keeps running
       Assert.IsTrue(true);
    }
}

test explorer

解决方法

您的实施并没有错,因为您遵循了 AAA 实践(安排、行动、断言)。

然而,您似乎还没有弄清楚要测试什么。您是否希望 Program.Main 永远运行?还是应该在某个时候终止? (某事或某人可能会导致终止。)

如果你能找出如何导致终止,你应该在你的测试中做到这一点,然后做出断言(这显然反映了你对终止的期望。)