2

ここでは、NUnit と MSTest に関する SO に関する質問がたくさんあり、私はそれらのかなりの数を読みました。ここでの私の質問は、個別に投稿するのに十分なほどわずかに異なると思います。

私が C# を使い始めたとき、以前 C++ を使っていたときには MSTest を利用できないことに慣れていたので、MSTest を見ることなど考えたこともありませんでした。基本的に全部忘れました。:) それで、私は NUnit から始めて、とても気に入りました。テストのセットアップは非常に簡単で、テストはそれほど面倒ではありませんでした。IDE を起動してテストを実行するだけです。

ここで多くの人が指摘しているように、NUnit は頻繁に更新されますが、MSTest は IDE と同じ頻度でしか更新されません。TDD の最前線にいる必要がないのであれば、これは必ずしも問題ではありませんが (私はそうではありません)、頻繁な更新で私が抱えていた問題は、すべてのシステムを最新の状態に保つことです。私は毎日 4 ~ 5 台の異なる PC を使用しており、すべての PC を更新するのは大したことではありませんが、古いバージョンの NUnit を使用するシステムでコードを適切にコンパイルする方法を望んでいました。私のプロジェクトは NUnit インストール フォルダーを参照していたため、フレームワークをアップグレードすると、古いフレームワークがインストールされているコンピューターはプロジェクトをコンパイルできなくなりました。NUnit DLL だけを含む共通フォルダーを SVN に作成して、この問題に対処しようとしました。 この問題を回避する方法はありますか? これが私が最初に使用をやめた理由です。

そんなある日、MSTest のことを思い出し、試してみることにしました。IDE に統合されていることが気に入りました。CTRL-R、CTRL-A、すべてのテストが実行されます。なんとシンプル!しかし、MSTest で利用できるテストの種類はかなり限られていることがわかりました。実際にどれだけ必要かはわかりませんでしたが、NUnit に戻る必要があると判断し、そうしました。

この頃、単体テストのデバッグが必要になり始めていました。NUnit でそれを行う方法を理解する唯一の方法は、NUnit をスタートアップ アプリケーションとして設定し、テストにブレークポイントを設定することでした。次に、NUnit GUI でテストを実行してブレークポイントに到達します。これは完全な PITA でした。次に、MSTest の GUI をもう一度見てみると、[デバッグ] をクリックするだけでテストが実行されることがわかりました。おお!これが、私が MSTest を支持するようになったキラー機能でした。

今、私は MSTest を使用して戻ってきました。残念ながら、今日、私は毎日のビルドについて考え始め、Tinderbox で検索しました。これは、この種のことを以前に聞いた唯一のツールです。これにより、buildbot や TFS などの他のツールに目を向けることができました。ここでの問題は、自動化された毎日のビルド、継続的インテグレーション、または流行語が何であれ、MSTest が私を TFS に固定することが保証されていると思うことです。私の会社は、MS のみのソリューション (VS 以外) に縛られる余裕がないため、他の選択肢を検討したいと考えています。

NUnit に戻っても問題ありません。100 以上の単体テストを書き直すことにわくわくしているわけではありませんが、その通りです。ただし、要約すると、私のこれら2つの問題を押しつぶす方法を誰かが説明してくれることを本当に望んでいます。

  1. プロジェクトをビルドするためにすべてのシステムで NUnit をアップグレードし続ける必要がないように、NUnit とプロジェクトをセットアップするにはどうすればよいですか?
  2. 単体テストのデバッグを簡単にするにはどうすればよいですか? アプリケーションをテスト/実行するには、NUnit とデフォルトのアプリを切り替え続ける必要があるため、私のアプローチは苦痛でした。NUnitIt on codeplexについて言及した SO の記事を見ましたが、経験がありません。

更新- 私は自分の開発 VM のものを比較していますが、これまでのところ、NUnitit は非常に優れています。インストールは簡単 (ワンクリック) で、SVN externals フォルダーにある NUnit バイナリーを指定するだけです。悪くない!また、VS -> Tools -> Options -> Keyboard に移動し、CTRL-R、CTRL-A のマッピングを NUnitit.Connect.DebugGUI にマッピングするように変更しました。NUnitを開いたときに自動的にテストを実行する方法がわからないため、完璧ではありませんが、かなり良いです。そして、デバッグは今あるべきように機能します!

更新 #2 -- TestDriven.Net をインストールして、簡単に試してみました。全体として、私は NUnitit よりもはるかに気に入っていますが、現時点では NUnitit が無料であるという理由で勝っています。また、NUnit でも動作するため、必要に応じて TestDriven.Net に「アップグレード」することができます。TestDriven.Net で私が最も気に入っているのは、失敗したテストをダブルクリックすると、失敗したテストの行に直接移動できることですが、NUnit + NUnitit ではこれができないようです。NUnit GUI と VS IDE の間でこのリンクを実現できた人はいますか?

4

3 に答える 3

2

単体テストのデバッグ(および実行も)を容易にするために、TestDriven.Netをチェックアウトすることをお勧めします。「TestWith>Debugger」機能はとても便利です。個人版は無料です。

于 2010-03-03T17:00:15.423 に答える
2

私が取り組んできた多くのプロジェクトでは、特定のバージョンの NUnit (または xUnit.net など) のコピーがソース管理の "lib"、"extrernal"、または "libraries" フォルダーに含まれており、ビルドのためにその場所を参照しています。彼らのすべてのテスト。これにより、 NUnit や xUnit.net を使用するためにインストールする必要がないため、「全員をアップグレードする」という頭痛の種が大幅に軽減されます。

このアプローチでは、TestDriven.Net などを使用してテストを実行したり、デバッガーでテストを実行したりできます。

于 2010-03-03T17:05:20.643 に答える
0

NUnit.frameworkリファレンスの「SpecificVersion」プロパティで遊んだことがありますか?特定のnunitバージョン用にコーディングされたテストでは、その特定のバージョンを実行する必要があるように、trueに設定したままにします。

たとえば、マシンに2.5があり、別のマシンには2.4しかない場合、.NETは2.4バージョンにうまくバインドするのでしょうか、それとも以前のバージョンから後のバージョンのアセンブリにのみバインドするのでしょうか。 (たとえば、2.4に対してコンパイルされていますが、実行時に2.5が利用可能ですか?)

于 2010-03-03T16:59:46.510 に答える