繁体   English   中英

C# NUnit 测试

[英]C# NUnit testing

我刚刚开始学习 C#,想开始使用 NUnit 进行测试。 我想我会从非常简单的开始并测试一个“Hello World”程序,只是为了让我习惯于一般的 NUnit。

这是我的代码:

你好世界

using System;

namespace TDDHelloWorld
{
    public class HelloWorld
    {
        static void Main()
        {
        }

        public static string HelloMessage()
        {
            return "Hello World";
        }
    }
}

HelloWorldTest.cs

using Microsoft.VisualStudio.TestPlatform.TestHost;
using NUnit.Framework;
using TDDHelloWorld;

namespace HelloWorldTests 
{
    [TestFixture]
    public class HelloWorldTest
    {
        [Test]
        public void SayHelloWorld()
        {
            string expected = "Hello World";

            Assert.AreEqual(expected, HelloWorld.HelloMessage());
        }
    }
}

我有几个问题:

  1. 我的static void Main {}应该有什么?
  2. 出现以下错误:

无法获取源代码位置:HelloWorldTests”-

这是什么意思?

  1. 这甚至正确吗? 我对 C# 很陌生,我没有信心。

如果相关,我将在 MacBook 上使用 Visual Studio Community。 我尝试过研究测试,但即使是最简单的测试也很难掌握。

如果有人可以提供帮助,将不胜感激! :)

单元测试最具挑战性的方面之一是知道什么该测试,什么不该测试。

这个挑战很微妙——至少有一整本书(可能更多)专门讨论这个主题:Roy Osherove的《单元测试的艺术》

在您的情况下,您同时学习 C# 和单元测试,使用一个非常简单的控制台应用程序作为“被测系统”。 保持简单是学习时的好方法; 但是您应该意识到,尤其是在单元测试概念的情况下,您将很难尝试将这些想法“投射”到实际的实际实例中。

不要让这阻碍您的实验和学习,因为您绝对可以建立在您正在学习的基础上。

你问:

我的static void Main {}应该有什么?

此方法是您的“应用程序”的入口点。 它应该调用你的HelloMessage()方法(因为这是你唯一的代码),我猜你想要经典的“Hello World”行为,所以你应该输出HelloMessage()返回的HelloMessage()

Console.WriteLine( HelloMessage() );

但这与 NUnit 或单元测试毫无关系。 这只是 C# 控制台应用程序一部分的约定。 如果您的入口点没有任何代码,那么您的应用程序将不会执行任何操作。

出现以下错误: Can't get source code location for : HelloWorldTests - 这是什么意思?

你是在 DEBUG 还是 RELEASE 中编译? RELEASE 编译中没有可用的调试符号,这可能是导致此问题的原因。 可以通过选择Run Unit Tests而不是Debug Unit Tests来解决此问题。 试一试。

这可能是 Visual Studio 的错误。 请参考以下帖子,看看它是否适用于您正在使用的 VS 版本: 无法获取测试方法的源信息

这甚至正确吗? 我对 C# 很陌生,我没有信心。

这是一个非常广泛的问题。 考虑买我上面提到的那本书。 找到一个已经有全面的单元测试的开源 C# 项目,然后阅读该测试代码。

这是让自己接触单元测试的想法和习语的理想方式。

请记住,犯错是学习和建立信心的好方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM