.NETの最適な単体テストフレームワークとは何ですか?[閉まっている]


26

誰もが他のオプションを考慮せずにNUnitを使用しているように思えます。私はこれが理由だと思う:

  • 誰もがすでにそれをよく知っているので、新しいAPIを学ぶ必要はありません。
  • NUnitで動作するように、継続的インテグレーションサーバーで既にセットアップされています。

私はこれについて間違っていますか?

最近、自分のプロジェクトの1つでxUnitを使用することにしました。それは私にとって非常に理にかなっており、概念的にはNUnitからの明確な一歩のように思えます。

どのフレームワークが実際に最良であるかについて意見を聞きたいと思います-それを学習したり、自動テストを再構成したりすることを考慮しません。


6
最もよく定義してください。一番安い?コーディングが最も簡単ですか?テストごとのコードの最少行数 stackoverflow.com/questions/680298/...
アミールレザエイ

申し訳ありませんが、私は最も強力で安定した直感的なものを意味していました。私は意見と理由を尋ねています。回答者の想像力に「ベスト」を任せました。それは、これらの側面のどれが人々にとって重要かを見たいからです。
誰も

2
質問を言い換えることができれば問題ないかもしれません。そうでなければ、これは建設的なものではない「Xのリスト」質問です。建設的な主観的質問の6つのガイドラインを
ChrisF

2
「ベスト」は馬鹿げたことです-コンテキストに依存するためとある程度必然的にある程度主観的であるため、単一のベストは非常にまれです。
マーフ

10
マーフ。まず、このサイトは主観的な質問のためのものです。第二に、意見を求めているので、他の人の「最高」の解釈を見てみたい。愚かだとは言わないでください。
誰も

回答:


15

MSTest

私は個人的にMSTestを使用しています。NUnitは非常に優れていますが、VS2010では、MSTestはすでにIDEに完全に統合されており、完全なプロジェクトテンプレートがあります。.NETの場合、2010を使用している場合、MSTestは単にコードカバレッジ、テストランナー、および他の利用可能なツールのために行く方法だと思います(VS2008のMSTestはパーになっていません)箱から出して。(CodeRushまたはR#を使用する場合、他のテストフレームワーク用の非常に優れたテストランナー/ツールがあります)

編集:私はXUnitに移動しました。:D


MbUnit / Galioとこの回答の両方に投票しました。MbUnit / Galioは単純に優れていますが、MsTestテストの実行に関しては、.Netライブラリの一部の重要なクラスはfinalであり、拡張可能ではないため、両手を縛られています。ただし、GUIの自動化を行う必要がある場合は、コード化されたUIとcuite.codeplex.com/documentationがMsTestの上で動作するため、それらを使用する必要があります。
ジョブ

2
私がMSTestで抱えている問題は、コマンドラインテストをネイティブにサポートしていないことです。これは、CIを介してユニットを実行する場合に問題になる可能性があります。
CmdrTallen

1
NunitはVSに完全に統合できるようになりました。
BKSpurgeon

はい、そうです。これが約6年前だと考えると、私は個人的にNUnitに移り、次にXUnitに移りました。両方(およびその他)には、MSTestと同じVS機能を照らすアダプターとして機能するnugetパッケージがあります。正直なところ、MSTestはおそらくこの時点でリストの一番下にあります。XUnitまたはNUnitに投票します。両方とも堅実で、維持され、現代的です。
ライアンヘイズ

14

数年前にGallio / MbUnitを使い始めました。そして、それが提供する機能と宝石は非常に強力なので、選択を後悔したことはありません。実際、私は現在Gallio OSSプロジェクトの開発チームの一員です。それで私はそれをさらに素晴らしいものにするために貢献することができます。

  • MbUnitには、開発者の作業を簡単にする多くの強力な機能があります(契約検証、テストファクトリ、構造的等価性比較、組み合わせテスト、データ生成フレームワーク、テキストの比較、xmlアサーション、拡張ポイントなど)。
  • Gallioは、優れたレポートツールを使用してすべてのテストを実行するための一貫したプラットフォームを提供します。また、MbUnitを使用しない他のOSSプロジェクトからのテストを統合して実行することができるという事実も気に入っています。多くのサードパーティツール内でのシームレスな統合も便利です(R#、PoSh、dotCoverなど)そして、インフラストラクチャの拡張性は素晴らしいです(たとえば、ネイティブのアンマネージC ++テストフレームワークのテストアダプターを書き終えたところです)近日中にリリースされる予定です)

Wikiは確かにガリオとMbUnitのV3を発見するための出発点は良いです。まだいくつかの章を欠いていますが、すでに静かに便利です。


構造的等価性比較器とデータ生成フレームワークは素晴らしいですね。MbUnitはデータ駆動型のテストを実行できます-つまり、csv / xsdファイルを読み取り、テストメソッドの引数として使用しますか?それは私にとってxunitの主な魅力の1つです。
誰も

はい。ASAIK MbUnitは、データ駆動型テストを導入した.NETの最初のテストフレームワークでした。テストパラメーターを内部([行]、[列]など)および外部([CsvData]、[XmlData]など)データソースにバインドできます。詳細はこちら:gallio.org/wiki/doku.php?id
Yann

GallioとVisual Studioで発生していたパフォーマンスの問題を修正しましたか?私たちにとって、取引キラーでした。
ワイアットバーネット

私は小さな会社で働いていたときにMbUnitを使用しました。後でMsTestを使用しなければならなかったので、うまくいきました。プロジェクト設定を構成するよりも、明示的なコードを書くことを今でも好みます。しかし、企業の支援はMSTestに役立ちます。設計がいものであれ美しいものであれ、MSFTから出てくるものはすべて十分にテストされることを知っています。
ジョブ

@YannTrevin Gallio / MbUnitのステータスは?Google Codeリポジトリを調べましたが、最近の変更はないようです。開発は他のどこかで起こっていますか、それともプロジェクトは行き詰っていますか?
ウェズリーワイザー

9

ここで1つを選んで使用することがおそらく最も重要なステップです。

個人的には、いくつかの理由でNUnitを選択します。何よりもまず、ツールのサポートです。Visual Studio 2010用の無料のアドインがあり、すべての主要なサードパーティプラグインがサポートしています。すべての単一のビルドシステム、テストカバレッジユーティリティ、およびCIサーバーがサポートしています。多くの場合、プラグインなし。コードレベルでは、それはこの時点でいずれかのシナリオについてだけで処理することができます-データ駆動型テスト、継承、抽象テストクラス、一般的なテストクラス、セットアップを、ある程度など、取り壊す我々が持っているのxUnitを NUnitのは、あまりにも得たので機能豊富そして強力。

Yannが述べたように、NUnitを超えて、MBUnit + Gallioについてかなりまともな議論をすることができると思います-それは非常に堅実なフレームワークです。可能な場合は避けるべきものは、いくつかの致命的な欠陥が見られるMSTestです。欠陥は、継承なし、プロフェッショナルまたはより優れたビジュアルスタジオSKUへの依存など、テストクラスの制約の一部です。テストを実行するために、ビルドサーバーにVisual Studioをインストールする必要があります。


0

1つの理由は、NUNITがxUnitよりも業界標準になることです。しかし、個人的には、私はxunitが大好きです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.