dot Net Core で Unit テスト

● dot Net Core で xUnit によるユニットテスト

1. *xUnitとMoq のインストール

Nugetパッケージマネージャーから xUnit , Moq をインストールします。

2. *テストケースの自動作成

dotnet new xunit -o tests -n MyApp.Test

tests フォルダにテスト用ファイルが作成されます。

3. *プロジェクト csproj へ参照の追加

cd tests
dotnet add reference ../MyApp.csproj

tests/MyApp.Test.csproj に MyApp.csproj の参照が追記されます

4. *tests/MyApp.Test.csproj の書き換え

テスト実行前にフレームワークとテストフレームワークのバージョンを合わせておきましょう

tests/MyApp.Test.csproj

    <TargetFramework>netcoreapp2.2</TargetFramework>
    <PackageReference Include="xunit" Version="2.4.1" />

4. *テストケースの記述

tests/UnitTest1.cs へテストケースを記述します

using System;
using Xunit;
using Moq;

namespace EFCoreFilterApp.Test
{
    public class UnitTest1
    {
        [Fact]
        public void Test1()
        {
            var mockRepo = new Mock<MyContext>();
            var controller = new HomeController(mockRepo.Object);
            Assert.True(false);
        }
    }
}

(↑ このテストケースは失敗します。)

5. *テストの実行とテストケースの変更

テストの実行

(テストはプロジェクトのトップディレクトリから実行します)

dotnet test

テストケースの書き換え

            Assert.True(false);

   ↓

            Assert.True(true);

テストの再実行

cd tests
dotnet test

これでテストの準備が整いました、あとはテストケースを書いてテストを実行しましょう。

5. *xUnitで使用できるAssertionの一覧

こちらにとてもうまくまとまっています。
xUnitで使用できるAssertion - Symfoware

等しいか(Equal)
等しくないか(NotEqual)
同じインスタンスでないか(NotSame)
同じインスタンスであるか(Same)
コレクションに含まれるか(Contains)
コレクションに含まれないか(DoesNotContain)
エラーが発生しないか(DoesNotThrow)
指定範囲に含まれるか(InRange)
指定クラスのインスタンスであるか(IsAssignableFrom)
空であるか(Empty)
Falseであるか(False)
指定のインスタンスであるか(IsType)
空でないか(NotEmpty)
指定のインスタンスではないか(IsNotType)
Nullでないか(NotNull)
nullであるか(Null)
trueであるか(True)
範囲に含まれないか(NotInRange)
指定のエラーが発生するか(Throws)

引用 : https://bit.ly/319sYVh 参考 : https://bit.ly/31eH5Jd

● テスト実行中にコンソールに出力する

using Xunit.Abstractions;
        private readonly ITestOutputHelper _output;

        public Test2(ITestOutputHelper output)
        {
            _output = output;
        }
_output.WriteLine("ほげほげ");

引用 : https://bit.ly/381bfAJ

添付ファイル1
添付ファイル2
No.1802
06/25 11:35

edit

添付ファイル