4

CppUnit は、JUnit やその他の XUnit フレームワークと同様に設計されています。

これの利点/欠点は何ですか? この理由でいつ選択する必要がありますか?
また、類似性に利点がない場合は、別のフレームワークを使用する必要があります。実際の使用は簡単で直感的ですか?


利点から始めます。いくつかのツールを使用すると、より良いプラットフォームになりますか? たとえば、継続的インテグレーションのためのツールですか?

混合環境 (C# や C++ など) の方が優れていますか?

短所: ビルドが少し複雑であるため、他のフレームワークよりもクロスプラットフォームではないことがわかっています。個人的には、(初心者にとって) コンパイル エラーやリンク エラーに陥りやすい、実際のコードをたどるのが難しい (たとえば、デバッガーで)、関数を使用するのがあまり自然ではないという印象があります ( C スタイルのインターフェイス)。

4

2 に答える 2

1

利点:

CppUnitの主な利点は、セットアップ/テスト/ティアダウンのXUnitパターンに従うことです。このパラダイムは、XUnitの経験がある人なら誰でも理解できます。(.NetまたはJava XUnitフレームワークで行うように)属性またはリフレクションの代わりにマクロを使用する必要があることは、少し回避策ですが、実際には負担にはなりません。

また、CppUnit自体は移植可能です。TestRunner.DLL GUIは完全にMFCで構築されているため、Windowsのみですが、コマンドラインバージョンはMicrosoft固有のコードを使用せず、多くのプラットフォームで実行されます。

また、非常に安定しています。開発者は、主にそのコアが何も必要としないため、長年にわたってほとんど何もしていません。それはその1つのことを非常にうまく行います。

短所:

残念ながら、エンドユーザーのサポートが不足しているという欠点があります。私の最大の不満は、CppUnitをIDEに統合する優れたツールがないことです。私がこれを最も厳しいと考える理由は、テストには規律が必要だからです。ユニットテストを必要以上に難しくするものはすべて、それを行わないための言い訳として使用されます。

Visual Studioが適切に解釈するテスト失敗行を出力する形式を手動で追加できます(したがって、それをダブルクリックすると、テストで失敗するASSERTionに移動します)。ただし、これはツールに付属していません。学習する必要があります。このようなサイトの外部で。

単体テストのスケルトンコードを生成するIDEプラグインを作成できますが、そのようなプラグインが公開されていないことは承知しています。繰り返しますが、これは開発者にとって簡単である必要があるものです。

統合がないため、CppUnitプロジェクトをコードベースに組み込むための公開されたガイダンスもありません。それは始めるのを非常に難しくします。

あなたがそれをうまく動かすことができれば、何人かの人々が幻のCppUnitプロジェクトのチェックイン/チェックアウトの問題の問題を報告します。

CppUnitは、特定のモックフレームワークをサポートしていません。ほとんどのモックフレームワークはリフレクションを使用してモックの開発を無痛にするため、C++は常に少し苦しみます。

代替案:

そこにはたくさんのC++ユニットテストフレームワークがあります。Googletestは何人かの人々から良いレビューを得ています。CppUnitLiteは一部の人から賞賛されていますが、非常に混乱し、役に立たないことがわかりました。CxxUnitには、不器用なPythonのスキャンと解析の手順が必要です。これは、文明化されていない時代にはあまりエレガントではない武器です。そして、このスペースには多くの商用プレーヤーがいて、彼らの製品を提供しています。

選択肢の非常に豊富なリストについては、http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2Bをお勧めします。

まだ使用する機会はありませんが、Visual Studio 2012にはMicrosoft独自のテストスイートツールが組み込まれており、ネイティブC++コードで使用できるようになっていることを理解しています。以前は、ほとんどのC++コードでは役に立たなかった.Net統合を介してのみ機能していました。テストされたコードを強調表示し、テストカバレッジのギャップを示す、コードカバレッジ統合を含むツールの完全なスイートを手に入れることを本当に楽しみにしています。

結論:今日からやり直す場合は、IDEと完全に統合された別のXUnit互換のテストフレームワークを選択します。CppUnitを選択したときは、Visual Studio 6.0にとって町で最高のゲームでしたが、現在はそれを使用しています。

于 2012-11-05T17:11:41.457 に答える