ASP.NET Core play with Nunit Test

介紹如何在ASP.NET Corek的環境使用Nunit Test Framework

先前介紹過MSTest,今天讓我們來嘗試用另外一套在.NET也十分流行的Nunit測試。

Nunit Test

與其他框架的比較:

First Unit Test on ASP.NET Core and Nunit

Create App Project

Create Test Project and Add App Project Reference

Write Function and Test it

我們簡單的做一個計算機並提供兩個計算功能,因為呼叫方便用了Lazy實作Singleton Pattern

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;

namespace App
{
public class Calculator
{

private static readonly Lazy<Calculator> lazy = new Lazy<Calculator>(() => new Calculator());

public static Calculator Instance { get { return lazy.Value; } }

private Calculator()
{

}

public int Add(int value1,int value2){
return value1+value2;
}

public int AddWithAutoPlus3(int value1,int value2){
return value1+value2+3;
}
}
}

這邊簡單的寫一個測試如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using NUnit.Framework;
using App;

namespace App.Test
{
[TestFixture]
public class UnitTest1
{
[Test]
public void Test_Calculator_Add()
{
var value1 = 1;
var value2 = 2;

var expected = 3;
int actual;

actual = Calculator.Instance.Add(value1,value2);
Assert.AreEqual(expected,actual);
Assert.Inconclusive("Test Passed with Basic Values");
}

[Test]
public void Test_Calculator_AddWithAutoPlus3()
{
var value1 = 1;
var value2 = 2;

var expected = 6;
int actual;

actual = Calculator.Instance.AddWithAutoPlus3(value1,value2);
Assert.AreEqual(expected,actual);
Assert.Inconclusive("Test Passed with Basic Values");
}
}
}

當我們撰寫好後就可以執行指令觀看測試結果

dotnet test

至於如何寫出一個好的測試案例,我個人是很推崇91的系列文章,除了解析的清楚也把所有的考量與訴求都一併的做說明。有興趣的朋友可以參考一下[30天快速上手TDD][Day 3]動手寫 Unit Test與這30天快速上手TDD系列文章

NUnit 3 Test Runner for .NET Core

NUnit 3 Test Runner for .NET Core是一套

由於該套件還在alpha階段,如果在windows的環境使用Visaul Studio的NuGet Management的話記得要選擇show prereleases才能找到該套件。

References