web-dev-qa-db-ja.com

Visual Studio 2012 MSTest対NUnitの長所と短所

ユニットテストに使用するテクノロジを決定する必要があります。現在、Visual Studio 2010を使用していますが、付属のMSTestには満足していません。これはバグが多く、展開が不十分です(たとえば、テスト設定の出力ディレクトリが正しく認識されない)。32ビットバージョンと64ビットバージョンのアセンブリをテストしようとすると、いくつかの問題が発生します。問題を悪化させるために、MSTestはJenkinsビルドシステムとの良好なインピーダンスマッチングがありません。したがって、NUnitに移行することを考えました。ただし、私たちのチームの誰もNUnitに十分に触れていません。また、まもなくVisual Studio 2012に移行します。

Visual Studio 2012 MSTest対Nunit最新バージョンの長所と短所を知る必要があります。スタックオーバーフローに関する記事のほとんどは古いバージョンのVSに関連しているので、私たちとは関係ありません。マイクロソフトは2010年以降、MSTestを大幅に改善していると思います。両方のテクノロジで直面した詳細な技術的問題と公平な比較を提供してください(新しいバージョンのみ

48

現時点では、MSTestとNUnitの両方を使用しています。私見NUnitはまだ良いソリューションです。 Visual Studio 2012 Premiumエディションをお持ちの場合、テストをグループ化できないように見えるという事実を除いて、実際には非常に素晴らしいです。 Visual Studioに統合されているという事実は気に入っていますが、グループ化の欠如と手動で選択せずにテストのサブセットを実行する機能は大きな問題です。

カバレッジ分析も、Premiumでは非常に適切です。高速で、必要なものをすばやく提供します。ただし、これはプレミアム機能です。

MSTestにはまだ機能が欠けているため(vs2010以降に削除された機能も)、ユニットテストにはNUnitを使用することをお勧めします。利点には、名前空間によるテストのグループ化、テストケースの注釈を追加する機能(異なるパラメーターを使用して同じテストを複数回実行)、カバレッジ分析のためのOpencoverおよびReport Generatorとの連携が含まれます。引用されている主な短所は、MSTestのように統合されていないことです。そのため、それが短所であるかどうかに関してあなたにとってどれだけ重要であるかによって異なります。

27
Matt Esch

@Biranchi:Visual Studio 2012(およびそれ以降)で使用する単体テストフレームワークは問題ではありません。ここで私のブログ投稿を参照してください、あなたが参照するものの続編。 http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/20/part-2-using-traits-with-different-test-frameworks-in-the-unit-test- Explorer.aspx

さまざまなフレームワークのテストを組み合わせて使用​​することもできます。メソッドレベルまでテストを行うこともできます。
これは、悪いコードの副作用なしにレガシーコードを別のコードに移動できることを意味します。

また、Nugetを使用してNUnitアダプタをソリューションにインストールし、開発者が自分でインストールできるようにする方法については、こちらを参照してください。 http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/11/part-3-unit-testing-with-traits-and-code-coverage-in-visual-studio- 2012-using-the-tfs-build-and-the-new-nuget-adapter-approach.aspx

@Sriwantha:MSTestはNUnitよりもシンプルなフレームワークです。 NUnit(およびXUnit)を使用すると柔軟性が向上し、コードの記述も少なくなります。 1つの例:カテゴリを使用している場合(および使用する必要がある場合)、MSTestではすべてのメソッドを装飾するためにカテゴリが必要です。 NUnitを使用すると、クラスを装飾できます。これは、そのクラスのすべてのメソッドに対して有効になります。 NUnitでは、強く型付けされたカテゴリを使用することもできます

public class Integration : Category {}

これは、代わりに使用できるカテゴリを宣言するのに十分です

Category("Integration");

スペルミスの危険があります。

NUnitは、データ駆動型テストのサポートがはるかに優れています。 NUnitは 理論 もサポートしています

いくつか例を挙げます。

10

VSの特性機能を調べましたか? http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/09/how-to-manage-unit-tests-in-visual-studio-2012-update-1-part- 1-using-traits-in-the-unit-test-Explorer.aspx

グループ化は、nunitと比較してmstest(2012 update 1)ではるかに優れています。

1
Biranchi Panda

VS2012では、「Update 1」以降がある場合、テストをグループに分類できます。 http://msdn.Microsoft.com/en-us/library/hh270865.aspx#BKMK_Grouping_and_filtering_the_test_list

1
Martin Noreke

ここにもう1つ追加します。特定のシナリオでは、MSTESTエンジンがTFSビルドでうまく機能しないようです。 TFSビルドを使用している場合、スキップされたテスト(Ignore属性でマークされている)は報告されません。 Assert.Inconclusiveのみが含まれます。これが問題になる場合は、MSTestの代わりにNUnitを使用する必要があります。

0
Saumil