回答:
Daok VS2008テストプロジェクトの名前のすべてのプロのは、ここでNUnitののプロのです。
個別のプロジェクトファイルと条件付きコンパイル(このように、VS-> NUnit)でテストクラスを変換できるため、ユニットテストフレームワークは実際にはそれほど重要ではありません。
#if!NUNIT Microsoft.VisualStudio.TestTools.UnitTestingを使用します。 #そうしないと NUnit.Frameworkを使用します。 TestClass = NUnit.Framework.TestFixtureAttribute;を使用します。 TestMethod = NUnit.Framework.TestAttribute;を使用します。 TestInitialize = NUnit.Framework.SetUpAttribute;を使用します。 TestCleanup = NUnit.Framework.TearDownAttribute;を使用します。 TestContext = System.String;を使用します。 DeploymentItem = NUnit.Framework.DescriptionAttribute;を使用します。 #endif
TestDriven.Netプラグインは優れており、それほど高価ではありません...単純なVS2008を使用するだけで、テストクラスまたはテストリストからテストを見つける必要があります。TestDriven.Netを使用すると、テストしているクラスから直接テストを実行できます。結局のところ、単体テストは保守が容易で、開発者の近くにある必要があります。
VS2008ビルトインユニットテストフレームワークの利点/変更
私は2年間NUnitを使用しています。すべては問題ありませんが、VSのユニットシステムは、Guiの内部にあり、めちゃくちゃにせずにプライベート関数のテストをより簡単に行うことができるので、かなり良いと言わざるを得ません。また、VSのユニットテストでは、NUnitだけでは実行できないカバーやその他のことを実行できます。
Visual Studioのテストフレームワークのわずかな不満の1つは、プロジェクトディレクトリがいっぱいになる傾向がある多くのテスト実行ファイルを作成することです-これはそれほど大きな問題ではありません。
また、TestDriven.NETなどのプラグインがない場合、組み込みのMicrosoft VSテストフレームワークとは異なり、Visual Studio環境内でNUnit(またはMbUnit、xUnitなど)の単体テストをデバッグできません。
少しトピックから外れていますが、NUnitを使用する場合は、ReSharperの使用をお勧めします。これにより、VS UIにいくつかのボタンが追加され、IDE内からのテストの実行とデバッグが非常に簡単になります。
このレビューは少し古くなっていますが、これについて詳しく説明しています。
XUnitは、グリーンフィールドプロジェクトのもう1つの可能性です。おそらくより直感的な構文ですが、他のフレームワークとの互換性はあまりありません。
私は両方を使用していくつかのTDDを実行し、(多分私は少しばかげているかもしれません)nUnitは私にとってはるかに高速で簡単に使用できるようです。そして私がたくさん言うとき、私はたくさんを意味します。
MS Testには、いたるところに属性が多すぎます。実際のテストを実行するコードは、あちこちで読み取れる小さな行です。大きな混乱。nUnitでは、テストを実行するコードが属性を支配するだけです。
また、nUnitでは、実行するテストをクリックするだけです(1つだけ?クラスをカバーするすべてのテスト?アセンブリ?ソリューション?)。ワンクリック。そして、窓はすっきりしていて大きい。緑と赤の明かりが点灯します。あなたは本当に一目で何が起こるかを知っています。
VSTSでは、テストリストが画面の下部に詰まっています。小さくて見づらいです。何が起こったのかを知るには、2度見なければなりません。また、テストを1つだけ実行することはできません(まあ、まだわかりませんでした!)。
もちろん、私は間違っているかもしれません-「VSTSを使用して単純なTDDを行う方法」に関する21件のブログ投稿を読んだだけです。私はもっと読むべきだった、あなたは正しい。
nUnitについては、1つ読んだ。そして私は同じ日にTDDをしていました。楽しみで。
ちなみに、私は通常マイクロソフト製品が大好きです。Visual Studioは、開発者が購入できる最高のツールですが、Visual Studio Team SystemでのTDDと作業項目の管理は、本当にひどいものです。
ではごきげんよう。シルヴァン。
「NUnitファイル構造はVSTestよりも豊富です」というメッセージが表示されます...もちろん、NUnitファイル構造を好む場合は、このソリューションを次のように使用できます(NUnit-> VS)。
#if !MSTEST
using NUnit.Framework;
#else
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
using SetUp = Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute;
using TearDown = Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute;
#endif
または他の変換... :-)ここでの使用は、コンパイラの単なるエイリアスです。
MSTestから始めましたが、単純な理由で切り替えました。MSTestは、他のアセンブリからのテストメソッドの継承をサポートしていません。
同じテストを何度も書くのは嫌だった。特に、テストメソッドが数百のテストに簡単に実行できる大規模なプロジェクトでは。
NUnitは私が必要とするものを正確に行います。NUnitで欠けているのは、各テストの赤/緑のステータス(VSTSのように)を表示できるVisual Studioアドインだけです。
MSTestまたはnUnitのいずれかを検討している場合は、mbUnitを確認することをお勧めします。私の理由は
最初に[RowTest ....]機能のためにmbUnitを取り上げましたが、戻る理由が1つも見つかりませんでした。すべてのアクティブなテストスイートをnUnitから移動しましたが、振り返ることはありませんでした。それ以来、私は2つの異なる開発チームをメリットに変えてきました。
テストするプロジェクトの一部としてテストを行うのではなく、別のプロジェクトを作成する必要があるため、VS組み込みのテストフレームワークは好きではありません。
MSTestは基本的にNUnitをわずかに作り直したもので、いくつかの新機能(フィクスチャとテストレベルだけでなく、アセンブリのセットアップとティアダウンなど)があり、最良のビット(新しい2.4制約構文など)がいくつか欠けています。NUnitはより成熟しており、他のベンダーからのサポートも豊富です。もちろん、それは常に無料であるため(MSTestは2008年のProfessionalバージョンにしか入っていませんでしたが、それ以前は、より高価なSKUでした)、ほとんどのALT.NETプロジェクトはそれを使用しています。
とはいえ、Microsoftのラベルが付いていないもの、特にOSSコードを使用することに非常に消極的である企業がいくつかあります。したがって、公式のMSテストフレームワークを持つことは、これらの企業がテストを受ける必要がある動機になる可能性があります。正直に言って、どのツールを使用するかではなく、重要なのはテストです(そして上記のTuomas Hietanenのコードを使用すれば、テストフレームワークをほぼ交換可能にすることができます)。
コードコントラクトシステムの .NET 4.0でのリリースと静的チェッカーの可用性により、理論的にはより少ないテストケースを書く必要があり、Pexのようなツールがそれらのケースを特定するのに役立ちます。これを手元のディスカッションに関連付けてください。契約がテールをカバーしているためにユニットテストの実行を減らす必要がある場合は、管理への依存度が1つ少ないため、組み込みの部分を使用しないでください。最近、私は単純さについてすべてです。:-)
以下も参照してください。
MSの小さなテストフレームワークを使用したいと思いますが、今のところNUnitを使用しています。MSの問題は一般的に(私にとって)
警告-aspxサイトをテストしている場合は、必ず MSを使用します-単独で開発している場合も、MSは問題ありません-スキルが限られていて、NUnitを構成できなかった場合:)
テストを記述してNUnitGUIまたは他のフロントエンドの1つを起動する方がはるかに簡単です(testDrivenははるかにはるかに高額です)。コマンドラインバージョンを使用したデバッグのセットアップも非常に簡単です。