NUnitとXUnit、どちらもC#のテストフレームワークです。
NUnitのヘビーユーザーからのXUnitを使ってみて感じたことを書きます。
どうしても偏った意見になってしまいますので、ご承知おきください。
XUnitの良いところ
メソッド名
AreEqualでなくEqualと関数名が簡潔なのは良いのは認めざるを得ないと思います。
確かにAreは必要かというと不要です。
型の比較
型の比較が正確なところは良いと思います。
NUnitだと
Assert.AreEqual(1, "test");
が、コンパイルエラーになりません。
これは確かに残念。
なのに、XUnitについて検討が必要な点
会社の別の人間がNUnitかXUnitか検討してNUnitにした点で以下の課題でした。
- アトリビュートが優しくない
- 日本語ドキュメントが充実していない
XUnitだとSetupというアトリビュートはなく、コンストラクタで宣言することになります。
Comparing xUnit.net to other frameworks > xUnit.net
日本語ドキュメントについては、検索したところ、全くない訳ではないですね。
我々、和製C#erの努力が必要なのかなと。
コンソール出力について一手間必要
NUnitであれば、Console.WriteLineすれば出力できます。
が、XUnitについては下記記事のような一手間が必要です。
テストケースについて
このあたりは慣れとかなのでしょうが、
NUnitだとIEnumerable<TestCaseData>を返すメソッドを宣言して、TestCaseSourceアトリビュートで指定すればいいのですが、
XUnitだとクラスを宣言してメソッドも宣言するのはうーん。