コンテンツにスキップ

xUnit.net

xUnit.netを使って単体テストを行えるようにする。

最終形は以下になる。

1
2
3
4
5
6
7
8
C:\src
└─example
    ├─Example
    │  ├─Example.csproj
    │  └─Program.cs
    └─ExampleTests
        ├─ExampleTests.csproj
        └─ProgramTest.cs

開発対象のプロジェクトを作成する

開発対象のプロジェクトを作成する。

1
2
3
4
5
6
7
cd C:\src
mkdir example
cd example

mkdir Example
cd Example
dotnet new console

開発対象のコードを書く。

Example\Program.cs
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
namespace Example;

public class Program
{
    public static int Sum(int a, int b)
    {
        return a + b;
    }

    public static void Main()
    {
        Console.WriteLine("Hello, World!");
    }
}

xUnit.net v3 をインストールする

インストールしていない場合はインストールする。

1
dotnet new install xunit.v3.templates

単体テストのプロジェクトを作成する

1
2
3
4
cd ..
mkdir ExampleTests
cd ExampleTests
dotnet new xunit3

単体テストのプロジェクトファイルのターゲットフレームワークを本体のプロジェクトのものと合わせる。

ExampleTests\ExampleTests.csproj
1
2
3
4
5
<Project Sdk="Microsoft.NET.Sdk">
    <!-- 略 -->
    <TargetFramework>net9.0</TargetFramework>
    <!-- 略 -->
</Project>

ソリューションファイルとプロジェクトファイルについて設定する。

1
2
3
4
5
6
7
cd ..

rem ソリューションファイルに単体テストのプロジェクトを追加する
dotnet sln add ExampleTests

rem 単体テストのプロジェクトに本体のプロジェクトの参照を追加する
dotnet add ExampleTests\ExampleTests.csproj reference Example\Example.csproj

単体テストのコードを書く。

ExampleTests\ProgramTest.cs
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
using Example;

namespace ExampleTests;

public class ProgramTest
{
    [Fact]
    public void Test1()
    {
        Assert.Equal(2, Program.Sum(1, 1));
    }
}

単体テストを実行する

1
dotnet test

VSCode で開発している場合は左のフラスコのアイコンからテストを実行することができる。

例外を確認する

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
namespace ExampleTests;

public class UnitTest1
{
    [Fact]
    public void Test1()
    {
        Assert.Throws<NotImplementedException>(() => Program.Sum(1, 1));
    }
}