nunitnunit入门


备注

本节概述了nunit是什么,以及开发人员可能想要使用它的原因。

它还应该提到nunit中的任何大型主题,并链接到相关主题。由于nunit的文档是新的,您可能需要创建这些相关主题的初始版本。

版本

发布日期
2.2 2004年8月8日
2.2.1 2004-10-26
2.2.2 2004-12-07
2.2.3 2005-02-14
2.2.4 2005-12-14
2.2.5 2005-12-22
2.2.6 2006-01-21
2.2.7 2006-02-18
2.2.8 2006-04-21
2.2.9 2006-11-26
2.2.10 2007-03-15
2.4 RC1 2007-02-25
2.4(最终版) 2007-03-16
2.4.1 2007-05-03
2.4.2 2007-08-02
2.4.4 2007-10-20
2.4.5 2007-11-23
2.4.6 2007-12-31
2.4.7 2008-03-30
2.4.8 2008-07-21
2.5 2009-05-02
2.5.1 2009-07-08
2.5.2 2009-08-10
2.5.3 2009-12-11
2.5.4 2010-04-08
2.5.5 2010-04-22
2.5.6 2010-07-24
2.5.7 2010-08-01
2.5.8 2010-10-14
2.5.9 2010-12-14
2.5.10 2011-04-02
2.6 2012-02-20
2.6.1 2012-08-04
2.6.2 2012年10月22日
2.6.3 二〇一三年十月一十日
2.6.4 情节中字
3.0(Alpha 1) 2014年9月22日
3.0(Beta 1) 2015年3月25日
3.0 RC1 2015年11月1日
3.0.0最终版本二〇一五年十一月十五日
3.0.1 2015年12月1日
3.2 2016年3月5日
3.2.1 2016年4月19日
3.4 2016年6月25日

你好,世界

[TestFixture]
public class UnitTest1
{
    class Message
    {
        public string Text { get; } = "Hello World";
    }

    [Test]
    public void HelloWorldTest()
    {
        // Act
        var message = new Message();

        // Assert
        Assert.That(message.Text, Is.EqualTo("Hello World"));
    }
}
 

Hello World测试

使用NuGet进行安装

Install-Package NUnit
 

该软件包包括创建单元测试所需的所有程序集。

可以使用以下方法之一执行测试:

  • Visual Studio单元测试窗口
  • 控制台运行
  • 支持NUnit 3的第三方运动员

Visual Studio单元测试窗口

要使用Visual Studio单元测试窗口执行测试,请安装NUnit 3测试适配器。 https://visualstudiogallery.msdn.microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d

控制台运行器

通过NuGet安装NUnit Console Runner

Install-Package NUnit.Console
 

可执行文件nunit3-console.exe位于packages \ NUnit.3.XX \ tools中

TestCaseAttribute

[TestCase(0, 0, 0)]
[TestCase(34, 25, 59)]
[TestCase(-1250, 10000, 8750)]
public void AddNumbersTest(int a, int b, int expected)
{
    // Act
    int result = a + b;
            
    // Assert
    Assert.That(result, Is.EqualTo(expected));
}
 

AddNumbersTest已通过

为什么你不能使用Assert.Equals

曾经想知道为什么你不能为Nunit和MSTest使用Assert.Equals()。如果你还没有开始,你需要知道你不能使用这种方法。相反,您将使用Assert.AreEqual()来比较两个对象的相等性。

这里的原因很简单。与任何类一样,Assert类继承自System.Object,它具有公共虚拟Equals方法,用于检查给定对象是否等于当前对象。因此,调用equals方法将是一个错误,因为在单元测试中,您将比较两个与Assert类无关的对象。因此,Nunit和MSTest都选择为此目的提供方法Assert.AreEqual。

此外,为了确保您不会错误地使用Equals方法,他们决定抛出异常以警告您,如果您错误地使用了它。

Nunit实施:

        [EditorBrowsable(EditorBrowsableState.Never)]
    public static new bool Equals(object a, object b)
    {
        // TODO: This should probably be InvalidOperationException
        throw new AssertionException("Assert.Equals should not be used for Assertions");
    }