web-dev-qa-db-ja.com

nUnit対xUnit?

nUnitxUnit.net の違いはどこにありますか? 1つだけでなく、2つを開発する意味は何ですか?

私はxUnitがnUnitの発明者によって開発されていることを読みました:

xUnit.netは、.NET Frameworkの単体テストツールです。 作成者NUnitの元の発明者

別の手で:

NUnitは、すべての.Net言語の単体テストフレームワークです。現在の製品リリースバージョン2.6は、このxUnitベースの単体テストツールの7番目のメジャーリリースです

それで、真実はどこにありますか?

77
Ruslan

回答は少し古いので、アップデートを提供することにしました:この回答を書いている時点で、最新のNUnitバージョンはv3.5とxUnit.netです。 v2.1

どちらのフレームワークも素晴らしく、どちらも並列テスト実行をサポートしています(ただし、方法は異なります)。NUnitは2002年から使用されており、広く使用されています。 xUnit.netはより近代的で、よりTDDに準拠し、より拡張可能であり、.netコアの開発においてもトレンドです。それも十分に文書化されています。

それに加えて、私が気付いた主な違いは、xUnit.netがテストメソッドを実行する方法です。したがって、NUnitには、テストクラスとテストメソッドのセットがあります。 NUnitはテストクラスの新しいインスタンスを作成し、同じインスタンスからすべてのテストメソッドを実行します。一方、xUnit.netは、テストメソッドごとにテストクラスの新しいインスタンスを作成します。したがって、フィールドまたはプロパティを使用してテストメソッド間でデータを共有することはできません。これは、私たちのテストメソッドが相互に依存しているため、TDDでは受け入れられないためです。したがって、xunit.netを使用する場合、テストメソッドが完全に分離されていることを確認できます。

ただし、テストメソッド間で一部のデータを共有する場合は、xUnitを使用して共有できます。したがって、デフォルトではすべてのテストメソッドが完全に分離されていますが、特定のケースでは意図的にこの分離を解除できます。私はこの態度を好みます、それが私がそれをより好きにする理由です。

38
akazemis

単一のツールの名前( xUnit.net )とユニットテストフレームワークのクラス全体の名前( xUnitxJUnit、NUnitなどの言語/環境を指します。

22
Joey

xUnitの長所:xUnitは、古い「SetUp」および「TearDown」メソッドを回避することにより、新しいコンセプトに従います。 .NET開発者と同じようにIDisposableとコンストラクタを使用する必要があります。また、xUnitには明確なコンテキスト共有の概念があります。

xUnit短所:テストコンテキストを取得するための可用性はまだ実装されていません。

3
TakinosaJi

XUnitの利点の1つは、異なるクラスのテストを見つけることです並行して実行されます。多くのテストケースがある場合、これにより多くの時間を節約できます。

もちろん、これをオフにしたり、操作(スレッド数、クラスごとのスレッド、アセンブリごとのテストなど)を制御したりできます。

これをチェックしてください 2つのテストプロジェクトを使用したサンプルソリューション、1つはxUnitを使用し、もう1つはNUnitを使用

並列テストの詳細については、xUnit here を参照してください。

2
Rad