我要开始使用NUnit进行单元测试(不运行测试),为什么?

时间:2020-07-17 20:57:42

标签: c# visual-studio unit-testing nunit

我开始在Visual Studio中使用单元测试。我正在阅读有关以下内容的Microsoft文档:Get started with unit testing,但是当我运行时,没有运行测试,并显示以下内容:程序由于其保护级别而无法访问。我不知道我现在要做什么。 你能帮忙吗?

这是我的Hello World程序

using System;

namespace demo
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Hello World!");
        }
    }
}

使用NUnit进行单元测试

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

namespace HelloWorldTests
{
    public class Tests
    {
        private const string Expected = "Hello World!";

        [SetUp]
        public void Setup()
        {
        }
        [Test]
        public void TestMethod1()
        {
            using (var sw = new StringWriter())
            {
                Console.SetOut(sw);
                demo.Program.Main();

                var result = sw.ToString().Trim();
                Assert.AreEqual(Expected, result);
            }
        }
    }
}

错误显示:错误CS0122:由于其保护级别(CS0122)(HelloWorldTests),无法访问“程序”

3 个答案:

答案 0 :(得分:0)

您需要将您的类程序声明为公共程序,以便测试项目可以访问它。

答案 1 :(得分:0)

感谢所有评论

using System;

namespace demo
{
    public class Program
    {
        public static void Main()
        {

            Console.WriteLine("Hello World!");
        }

    }
}

答案 2 :(得分:0)

我不太同意其他答案。不要仅出于测试目的而公开方法。这可能会破坏封装。

请使用InternalsVisibleToAttribute属性。