NUnit3TestExecutor 转换测试但不是 运行 它们

NUnit3TestExecutor converting tests but is not running them

试图让我的单元测试达到 运行,但在单击 "run tests" 之后,我的输出中只得到 "NUnit3TestExecutor converted 1 of 1 NUnit test cases"。测试尝试 运行 但最终会永远加载,直到我不得不手动取消该过程。知道是什么原因造成的吗?

using NUnit.Framework;
    using CalculatorApp;
    using System.IO;
    using System;
    using NUnit;



    namespace Tests
    {
        public class Tests
        {
            [SetUp]
            public void Setup()
            {
            }

            [Test]
            public void Test1()
            {

                using (StringWriter sw = new StringWriter())
                {
                    Console.SetOut(sw);
                    CalculatorApp.Program.Input1();
                    string expected = string.Format("Type a number, and then press Enter", Environment.NewLine);
                    Assert.AreEqual(expected, sw.ToString());
                    sw.Close();
                }
            }
        }
    }

根据您对 Console.SetOut 的使用,我假设您正在测试控制台程序。我还假设它等待用户输入。

不幸的是,它没有从您的代码中获取任何输入,因此挂起。

通过驱动控制台应用程序的输入和输出来测试控制台应用程序是可能的,但很复杂。您通常需要在单独的进程中启动它,监控标准和错误输出并驱动输入。大多数人不会以这种方式进行测试 - 至少那些有单元测试经验的人不会。

更好的方法是测试执行计算的后端。

还有一个问题我应该提到...NUnit 本身控制控制台输出。出于这个原因,您的测试需要保存当前输出设置并在退出前恢复它 - 否则,NUnit 的继续处理将会中断。