58
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C#Advent Calendar 2020

Day 8

.Net 5 時代のテストフレームワーク比較

Last updated at Posted at 2020-12-07

この記事は C# Advent Calendar 2020 の 8 日目の記事です。

Microsoft 公式ドキュメント .NET でのテスト - .NET Core | Microsoft Docs に記載されている主要な三つの xUnit, NUnit, MSTest フレームワークを比較してみます。

結論、どれを使うべきか

新しいプロジェクトなら xUnit か NUnit を使うとよいと思います。過去のプロジェクトのマイグレーションならそのプロジェクトで使っているフレームワークでよいと思います。

Visual Studio からの実行や CLI (dotnet test) の実行、例外テストやデータドリブンテスト (Theory, DataSource) といった主要な機能はどのフレームワークでも対応しています。

個人的には xUnit の書き方が好きなので xUnit を使うことが多いです。

トレンド

xUnit と NUnit が人気で、 MSTest は低めの結果になっています。 2020/12/6 での計測です。

過去一年間の NuGet

xUnit, NUnit, MSTest の順です。 MSTest はだいぶ低いですね。

NuGet Trends

Image from Gyazo

GitHub

Stars を見ると xUnit が多いですね。 NUnit もそれなりです。 MSTest はとても少なくなっています。

Github Compare

Image from Gyazo

2020 年の検索ワード

日本で見ると xUnit が少し低め。 NUnit, MSTest が同率です。

Japan - xUnit, NUnit, MSTest - Explore - Google Trends

Image from Gyazo

世界中で見ると xUnit, NUnit が高いです。 MSTest は低いですね。

Worldwide - xUnit, NUnit, MSTest - Explore - Google Trends

Image from Gyazo

細かい話(もっと知りたい人向け)

xUnit, NUnit はどちらも .NET Foundation がオーナーで、 MSTest は Microsoft がオーナーです。なのでどれも Microsoft 製なようなものです。
実際に Microsoft 関連の GitHub Repository を見てみると、 dotnet/aspnetcoreAzure/azure-powershell は xUnit を使っており、 dotnet/maui は NUnit を使っています。
日本発の C# フレームワークとライブラリで有名な企業の Cysharp, Inc の比較的新しいリポジトリ Cysharp/ConsoleAppFramework は xUnit を使っています。
MSTest は GitHub を検索してみた mstest · GitHub Topics のですが、これと言ってよさそうなものが見つかりませんでした。

ライセンスは NUnit と MSTest は MIT License で、 xUnit のみ Apache License 2.0 (※ LICENCE ファイルの書き方が特殊だけどたぶん合っているはず) です。なのでどれもライセンス表記で使えます。商用などあまり気にしなくても大丈夫ですね。

それぞれの機能やコードの書き方の違いなどは Unit Testing Frameworks: XUnit vs. NUnit vs. MSTEST for .NET and .NET Core | by Robin Ding | MediumComparing xUnit.net to other frameworks > xUnit.net が参考になると思います。内容は英語ですが表形式なので理解できるかと思います。

.NET 5 とそれぞれのテストフレームワークで作ったソースコードは KtoZ/dotNet5TestFrameworkDifference に置いてあるので参考にしてください。

参考

58
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?