このトピックに関してたくさんの質問があったことは承知していますが、どういうわけか自分のニーズに対応する質問が見つかりませんでした。
私のチームは、アプリケーションの自動ユニットテストを開始しようとしています。これまでに行ったことはなく、チームの誰もそれを経験したことがありません。ユニットテストを自動化するためのフレームワークを調査して見つけるように依頼されました。これまでのところ、選択肢をMSTest、NUnitおよびxUnitに絞り込んでいます。
インターネット全体で、MSTestに関する否定的なレビューを読みましたが、それは私たちの目的にとって最も便利なツールのようです。
1)アプリケーションは.NETです。
2)チーム全体での開発には、ライセンスされたVS IDE=を使用します。
3)ソース管理はTeam Foundation Server 2010です
4)CI/CDをソフトウェア配信プロセスの一部として統合する予定です。
MSTestはこのセットアップに正しく統合され、作業するための最もクリーンなインターフェイスを提供していると感じています。 MSUnitよりもNUnitまたはxUnitの場合に考慮すべき重要な利点はありますか?
私はNUnitで作業しているため偏っていますが、NUnitまたはxUnitの利点は、両方のフレームワークがデータ駆動型テスト、並列実行、高度な機能のホストなどのより多くの機能を提供することです。
そうは言っても、特にチームでユニットテストの経験があまりない場合は、MSTestに問題はありません。 Visual StudioおよびTFSと十分に統合されているため、テストの追加はかなり簡単です。 NUnitとxUnitの両方もうまく統合されますが、さらに設定が必要になる場合があります。
MSTestから始めましょう。単体テストの簡単な紹介です。 MSTestのいくつかの制限に直面した場合、NUnitまたはxUnitへの移行はかなり簡単です。単純なケースでは、NuGetパッケージを変更し、属性を検索/置換するだけです。
XUnitとNUnitのどちらかを選択する場合、どちらも優れた選択肢ですが、それぞれに異なる哲学があります。 NUnitはより柔軟である傾向があり、さまざまなテストスタイルを可能にし、統合テストに使用できます。ただし、柔軟性があり、足元で自分を撃つことができ、純粋主義者が不快感を抱くようなテストを書くことができます。 NUnitは選択をあなたに任せます。
ただし、xUnitは少し独断的になりがちであり、ユニットテストの「成功の秘訣」へとあなたを駆り立てます。私の経験では、グリーンフィールドプロジェクトには最適ですが、リファクタリングを行わないと、一部の不十分に設計されたブラウンフィールドプロジェクトのテストが困難になる可能性があります。
結局、これらのテストフレームワークのいずれかで問題が発生することはありません。
XUnitの1つの否定的な側面を追加したいと思います。基本的なドキュメントすらなく、「はじめに」以外はありません。 APIはありません。
以下は、3つのフレームワークの簡単な分析であり、色でランク付けされています。
ぬりえの伝説:
MSTestシンプルで、Visual Studioに統合されており、Microsoftが提供しているという理由だけで優れています。十分な柔軟性がなく、あまり拡張できません。ただし、単体テストフレームワークだけでなく、統合テスト、Web(ロード)パフォーマンステストもサポートしています。他の2つは純粋な単体テストフレームワークです。だから私はMSTestは「すべての取引のジャック、何もなしのマスター」だと思います。
NUnitは私の選択です。非常に優れたユーザーベース、ドキュメント、コミュニティサポートにより、より柔軟でシンプルです。
XUnitは、少し異なるスタイルに従っており、個人的には、NUnitに比べてあまり利点がないので、私の選択の最小値です。場合によっては、テストケースに適合するようにコードをリファクタリングする必要があります。しかし、XUnitを好む人はたくさんいるので、これは私の意見です。