首页 > 解决方案 > 如何在 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);
    }
}

测试资源管理器

标签: c#asp.net-mvcunit-testingasp.net-coremstest

解决方案


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

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

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


推荐阅读