私はC++コードにBoostテストフレームワークを使用しますが、おそらくすべてのC++テストフレームワークに共通する2つの問題があります。
誰もがより良いテストフレームワークを知っていますか、それとも私は永遠にJava/.NET開発者が利用できるテストツールにjeしていますか?
非常によく似た質問 に答えました。最終的にはNoel LlopisのUnitTest ++を使用しました。 boost :: testよりも気に入ったのは、テストハーネスのメインプログラムをマクロで実装することを要求しなかったためです。作成した実行可能ファイルにプラグインできます。 boost :: testと同じ厄介な問題があります。リンクするライブラリが必要です。CxxTestを使用しましたが、テストを自動生成するにはC++-landの他のどの製品よりも近くなります(Perlが必要です)これを行うためにビルドシステムの一部になります)。 C++は、.NET言語およびJavaが提供するリフレクションフックを提供しません。VisualStudio Team System-Developer's EditionのMsTestツールは、アンマネージC++のテストスタブを自動生成しますが、これを行うにはDLLからエクスポートする必要があるため、静的ライブラリでは動作しません。NETの世界の他のテストフレームワークにもこの機能があるかもしれませんが、私はよく知りません。そのため、現在、アンマネージC++にはUnitTest ++を使用しており、現在、マネージライブラリにはMsTestとNUnitを選択しています。
独自のフレームワーク [〜#〜] catch [〜#〜] をプッシュしたところです。まだ開発中ですが、他のほとんどのフレームワークをすでに上回っていると思います。人によって基準は異なりますが、トレードオフをあまりせずにほとんどの領域をカバーしようとしました。リンクされたテイスターのブログエントリをご覧ください。私の上位5つの機能は次のとおりです。
スタブの生成はdoes n'tではありませんが、それはかなり特殊な領域です。 Isolator ++ は、それを本当に実現した最初のツールだと思います。モック/スタブフレームワークは、通常、ユニットテストフレームワークから独立していることに注意してください。 CATCHは、テスト状態がコンテキストによって渡されないため、モックオブジェクトで特にうまく機能します。
また、Objective-Cバインディングもあります。
[更新]
数年前から私のこの答えに出会ったばかりです。すべての素晴らしいコメントをありがとう!明らかに、Catchはその時代に大きく発展しました。現在、BDDスタイルのテスト(指定された/いつ/の場合)、タグ、singleヘッダー、および内部改善と改良(例えば、より豊富なコマンドライン、明確で表現力豊かな出力など)。 最新のブログ記事はこちらです
Google C++ Testing Frameworkをご覧ください。
Googleが社内のすべてのC++プロジェクトに使用しているため、かなり優れているはずです。
http://googletesting.blogspot.com/2008/07/announcing-new-google-c-testing.html
Boost.Testでは、テストケースを名前で実行できます。またはテストスイート。またはそれらのいくつか。
Boost.Testは、mainの実装を要求しませんが、mainの実装を簡単にします。
Boost.Testは、ライブラリとして使用する必要はありません。単一のヘッダーバリアントがあります。
私は nitTest ++ の大ファンです。非常に軽量ですが、仕事はします。そこで簡単に単一のテストを実行できます。
いい質問です!数年前、私は使用する価値のあるものを永遠に探し回り、不足しました。私は非常に軽量で、いくつかのライブラリにリンクする必要のないものを探していました...あなたが知っている数分で立ち上がって実行できるものを知っています。
しかし、私は持続し、 cxxtest を越えて実行することになりました。
ウェブサイトから:
すごい...超シンプル!ヘッダーファイルをインクルードし、Testクラスから派生すれば、すぐに実行できます。私たちは過去4年間これを使用してきましたが、まだ満足できるものをまだ見つけていません。
WinUnit を試してください。それは素晴らしいように聞こえ、 John Robbins によって推奨されています。
Boost単体テストフレームワークが気に入っています。これは主に非常に軽量だからです。
スタブを生成する単体テストフレームワークについて聞いたことがありません。コード生成が非常にすぐに時代遅れになるからという理由だけで、私は一般的にコード生成にまったく納得しません。たくさんのクラスがあるときに役立つかもしれませんか?
テスト駆動開発の支持者は、回帰を導入していないことを確認するために、テストスイート全体を毎回実行することが基本であるとおそらく言うでしょう。すべてのテストの実行に時間がかかりすぎる場合、テストが大きすぎるか、またはモックアウトする必要があるCPU集中型の関数を何度も呼び出していますか?それでも問題が解決しない場合は、ブーストユニットテストの薄いラッパーでテストを選択できます。おそらく、別のフレームワークを学習してすべてのテストを移植するよりも高速です。
Aeryn は、見る価値のあるもう1つのフレームワークです
http://groups.google.com/group/googletestframework 、しかしそれはかなり新しい
Visual Studioには、単体テストフレームワークが組み込まれています。これは、win32コンソールアプリケーションのテストプロジェクトをセットアップするための優れたリンクです。
http://codeketchup.blogspot.ie/2012/12/unit-test-for-unmanaged-c-in-visual.html
静的なDLLプロジェクトで作業している場合、他の人がGTestやBoostのような外部テスティングフレームワークに追加機能があることを指摘しているので、セットアップがはるかに簡単です。
tut-framework を使用しています
CppUnit は、JUnitに対する最初のオマージュでした。
Eclipse/JUnitはJavaの堅牢なパッケージであり、C++の拡張機能と同等の機能が両方あります。それはあなたが話していることをすることができます。もちろん、IDEを変更する必要があります...
テスト関数を自動的にスタブアウトすることは、問題の開発環境(またはフレームワークのスクリプト)の機能になると思います。おそらくCodeGearのC++ Builderアプリケーションは、ユーザー関数のテストコードをすばやく生成します。
私もUnitTest ++のファンです。
思わぬ障害は、ソース配布にはほぼ40の個別のファイルが含まれていることです。これはばかげています。単純なプロジェクトのソース管理とビルドタスクの管理は、これらすべての単体テストファイルの管理によって支配されます。
UnitTest ++を変更して、1つの.hおよび.cppファイルを追加することでプロジェクトと統合できるようにしました。これを「かわいい」と呼んでいます。詳細は http://ravenspoint.com/blog/index.php?entry=entry080704-063557
元の質問で求められたように、テストスタブは自動的に生成されません。そのような機能は価値がある以上に厄介なものになると考えずにはいられず、膨大な量の無用なコードがアクセサー関数を「テスト」します。
私は Igloo を試していますが、これもヘッダーのみのC++テストスイートです。2つの依存関係がヘッダーのみである場合でもです。
だから、それは非常に簡単で簡単です。 githubに含まれている例の他に、メインサイト igloo-testing.org に例と詳細があります。これと他のフレームワークの経験が増えたので、後でこれを更新します。
Andrew MarlowのFructoseライブラリはチェックアウトする価値があります... http://fructose.sourceforge.net/
彼がフルクトースを書いた当時の他の提供物のかなり詳細な分析と比較を含んでいた彼の文書を思い出しますが、その文書への直接のURLを見つけることができません。