gpt4 book ai didi

C# N单元测试

转载 作者:行者123 更新时间:2023-11-28 21:16:27 25 4
gpt4 key购买 nike

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

这是我的代码:

HelloWorld.cs

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. 出现以下错误:

Can't get source code location for : HelloWorldTests" -

这是什么意思?

  1. 这是否正确?我对 C# 很陌生,所以我没有信心。

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

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

最佳答案

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

这个挑战是微妙的——至少有一整本书(可能更多)专门讨论这个主题:The Art of Unit Testing by Roy Osherove。

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

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

你问:

What should be in my static void Main {} ?

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

Console.WriteLine( HelloMessage() );

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

The following error occurs: Can't get source code location for : HelloWorldTests - what does this mean?

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

这可能是 Visual Studio 错误。请引用以下帖子以查看它是否适用于您正在使用的 VS 版本:Unable to fetch source information for Test Method

Is this even correct? I am so new to C# I don't feel confident.

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

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

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

关于C# N单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57280123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com