C# + xUnit
方針
- C# のテストランナーとして xUnit (NuGetパッケージ) を使う
- .NET Framework (4.7.2 以上) を使用する
前提
Visual Studio をインストール済で NuGet 設定済であること
-
Microsoft Store > Visual Studio Community
- Microsoft Store で入手したインストーラでうまくいかなければ、こちらからダウンロードしたもので再実施。
- https://visualstudio.microsoft.com/ja/downloads/
- コンポーネントは「.NETデスクトップ開発」を選択。(インストール後でも追加可)
-
NuGet のURLが設定済であること
- ツール > オプション > NuGet パッケージマネージャ > パッケージソース
- 名前 : nuget.org
- ソース : https://api.nuget.org/v3/index.json
- (後からでも可だが、その場合は設定後にソリューションを右クリックで NuGet パッケージの復元)
プロジェクト作成
メインの(テスト対象の) プロジェクト作成
- コンソールアプリ
- プロジェクト名 : SampleXUnit
- 場所 : C:\Data
テスト用のプロジェクト追加
- xUnit テストプロジェクト (C#)
- プロジェクト名 : SampleXUnit.Tests
↓
このような構成となる
SampleXUnit ソリューション
├ SampleXUnit プロジェクト
└ SampleXUnit.Tests プロジェクト
NuGet パッケージは以下が入ればOK
- xunit
- xunit.runner.visualstudio
- Microsoft.NET.Test.Sdk
依存関係の設定
- テストプロジェクトから SampleXUnit を参照追加(Project Reference)
最小のコード
SampleXUnit/Sample.cs
namespace SampleXUnit
{
public static class Sample
{
public static int Add(int a, int b)
{
return a + b;
}
}
}
SampleXUnit.Tests/SampleTest.cs
using Xunit;
using SampleXUnit;
namespace SampleXUnit.Tests
{
public class SampleTests
{
[Fact]
public void TestAdd()
{
Assert.Equal(5, Sample.Add(2, 3));
}
}
}
決まりごと
- テストプロジェクト名は
XXXX.Tests/が一般的(縛りはないが) - テストクラス名は
XXXXTestsが一般的(縛りはないが) - テストメソッド名は
Add_Returns5_When2And3みたいなのが一般的らしい。ただアノテーションの[Fact]さえあればなんでも良い - 実行は メニューから [テスト] -> [すべてのテストを実行]
実行
- [テスト] -> [すべてのテストを実行]
実行結果
- テストエクスプローラというペインに GUI で出力される
→ テスト結果が見やすいのがとても良い
以下広告