Nugetパッケージマネージャーから xUnit , Moq をインストールします。
dotnet new xunit -o tests -n MyApp.Test
tests フォルダにテスト用ファイルが作成されます。
cd tests
dotnet add reference ../MyApp.csproj
tests/MyApp.Test.csproj に MyApp.csproj の参照が追記されます
テスト実行前にフレームワークとテストフレームワークのバージョンを合わせておきましょう
tests/MyApp.Test.csproj
<TargetFramework>netcoreapp2.2</TargetFramework>
<PackageReference Include="xunit" Version="2.4.1" />
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);
}
}
}
(↑ このテストケースは失敗します。)
テストの実行
(テストはプロジェクトのトップディレクトリから実行します)
dotnet test
テストケースの書き換え
Assert.True(false);
↓
Assert.True(true);
テストの再実行
cd tests
dotnet test
これでテストの準備が整いました、あとはテストケースを書いてテストを実行しましょう。
こちらにとてもうまくまとまっています。
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("ほげほげ");