.NET Standard のライブラリのテストにNunit 3.x を使ってみた

Console.WriteLine は正義。「ステップができない」「あんなの飾りです! 偉い人にはそれが分からんのです!」

参考サイト:https://docs.microsoft.com/ja-jp/dotnet/core/testing/unit-testing-with-nunit

上記のところのネタは .NET Core なのでGUIでもテストできる、つか、テストエクスプローラからいけるんだけれども、.NET Standard を対象にしたNUnit3.xの実行時はテストDLLの作成先パスの問題で動作失敗するので、テストエクスプローラでの実行、デバッグは不安定で動かないことままあり。まぁパス変更してそこに対してロードできるようにすればいいんだろうけど、いろいろごにょるくらいならシンプルでサイクル回せるつくりの方が楽だって思うのよね。

だって、CUIでできるんだもん。GUIなんて飾りですw

まずはソリューションにテストプロジェクト作成。

いきなりですが、ここですでにGUI(Visual Studio)を離れますw

image

ソリューションの右クリックからコマンドプロンプト起動w

> dotnet new -i NUnit3.DotNetNew.Template

まずはテンプレを追加。

そのあと、テストプロジェクトとなるディレクトリを作成。これはmkdirでOK。

mkdirできたら、そのディレクトリにカレントを移動して

> dotnet new nunit

ここまで作ったら、いったんVisualStudioに戻って、作成したテストプロジェクト(.csproj)をソリューションに追加。

追加が正常終了したらすぐにプロジェクトをアンロード。

そのまま右クリックで、テスト用のcsprojを編集。ItemGroupのPackageReferenceを推奨バージョンにセット。

<ItemGroup>
  <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
  <PackageReference Include="NUnit" Version="3.9.0" />
  <PackageReference Include="NUnit3TestAdapter" Version="3.9.0" />
</ItemGroup>

編集し終わったら、プロジェクトを再読み込み。

そしてテスト対象のプロジェクトをここから参照。

> dotnet add reference <相対パスで対象のcsproj を指定>

いつもどおりにテストコードを書いたら、テストプロジェクトの右クリックからコマンドプロンプト起動

> dotnet test –logger:trx

でテスト実行。

image

image

ちゃんとレッドグリーンで結果が表示されるんだよw そこ、大事。

テスト結果は、Visual Studio のテストプロジェクトのTestResultsフォルダにあるので、そのままVisualStudioで確認できるよ。

もちろん、レッドグリーンでねv

PS.ここまで来ちゃえば、こうしてもいいと思うの。

image

これで、コマンドプロンプト移動しなくてよくなるw

image

てな感じで、かなり自動w ただ、レッドグリーンの色変えがVisualStudioの出力にはないので、寂しいけどね。