[英]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());
}
}
}
我有几个问题:
static void Main {}
应该有什么?无法获取源代码位置:HelloWorldTests”-
这是什么意思?
如果相关,我将在 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.