問題タブ [cppunit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
3777 参照

c++ - メモリリーク検出にCppUnitを使用する

メモリリークに関してテストごとにアサーションを作成するために使用できるCppUnitの拡張機能を知っている人はいますか。

つまり、CPPUNIT_ASSERT_NO_LEAKS()?

基本的に、テストの実行によってメモリリークが発生した場合に、特定のテストに失敗できるようにしたいと考えています。

0 投票する
1 に答える
889 参照

visual-studio - VisualStudioがCPPUNITデバッグデータベースを見つけることができません

VisualStudio2008とCPPUNITを使用しています。すでにCPPUNITをコンパイルし、CPPUNITパスをインクルードパスとライブラリパスに追加しました。現在、CPPUNITライブラリを使用してプログラムをコンパイルできます。

ただし、リンカは次の警告を生成します。

警告2警告LNK4099:PDB'vc90.pdb'が'C:\ Program Files \ cppunit \ cppunit-1.12.1 \ lib \ cppunitd.lib'または'c:\ Users \ hidden1713 \ Desktop \3d_tank\で見つかりませんでしたcpp_pj \ bin \ vc90.pdb'; デバッグ情報がないかのようにオブジェクトをリンクするcppunitd.libGameUnitTest

cppunitd.libと一緒にcppunitd_dll.pdbファイルがあります。CPPUNITデバッグデータベースの場所をリンカに指示するにはどうすればよいですか?

皆さんありがとう。

0 投票する
3 に答える
3359 参照

c++ - CppUnit を使用したテスト ライブラリのリンク

CppUnit を使用して一連の単体テストをセットアップしていますが、テストが実行されていないという問題があります。プロジェクトはいくつかの小さなライブラリに分割されており、単体テスト クラスを同じように分割し、それらすべてを 1 つのテスト プログラムにリンクすることを計画しました。問題は、テストクラスが独自のライブラリにあり、明示的に呼び出さない限り、メインのテストプログラムにリンクされないことです。つまり、

runner.addTest( TestClass::suite() );

テストクラスごとに個別に、TestFactoryRegistry の makeTests() メソッドを使用してテストのリストを取得することはできません。それらをすべてトップディレクトリにまとめてコンパイルすると、 makeTests() メソッドは正常に機能しますが、できればすべてのテストクラスを1つの場所に配置したくありません。

CppUnit documentation は、次の小さなヒントを提供します

ヘルパー マクロ使用時のリンクの問題?

プロジェクトを作成し、その単体テスト スイートを作成する場合、いわゆるヘルパー マクロ (CPPUNIT_TEST_SUITE_NAMED_REGISTRATION、CPPUNIT_REGISTRY_ADD、および CPPUNIT_REGISTRY_ADD_TO_DEFAULT) を使用することで作業が容易になります。問題は、これらのマクロを TestFixture クラス (たとえば MyTest など) のソース コード ファイルで使用し、次のような行を使用する場合です。

);

ファイル main.cpp の main() 関数では、テストはまったく実行されません。

その理由は、ビルド プロセスのステップの 1 つであるリンク ステージが、main.cpp に未定義のシンボルがない場合、最終的な実行可能ファイルにオブジェクト ファイル (.obj または .o ファイル) を挿入しないためです。

このように、AutoRegister 静的変数のインスタンス化を含むオブジェクト コードは、最終的な実行可能ファイルの一部ではなく、main() 関数で自分自身をランナーに挿入することができません。

mytest.o ファイルが main.o と統合されて最終的な実行可能ファイルになるように、main.cpp に未定義のシンボルを作成する必要があります。

ミシェル・ノラールが犯したトリック

しかし、これを機能させる方法については述べていません。私は自分でそれを理解したり、オンラインで例を見つけることができないほど十分に密集しています。

これで、ライブラリごとに個別の実行可能テストを作成することができ、最終的にはそのようになる可能性がありますが、最初にこれを機能させたいと思ったので、実行するテストプログラムを 1 つだけ使用してすべてをテストしました。これを機能させる方法のアイデア/例はありますか?

0 投票する
3 に答える
14798 参照

c++ - CPPUnitユニットテストを実行する方法

私はCPPUnitを使用していくつかのc++ユニットテストを作成しました。

しかし、私はそれらを実行する方法を理解していません。

Nunit-guiのようなツールはありますか?

現在、DLLにテストを記述してパックしています。

私がグーグルで検索したとき、私はこのhttp://cppunit.sourceforge.net/doc/lastest/cppunit_cookbook.htmlを見つけました

しかし、DLLからテストを取得する方法を理解できません。

0 投票する
3 に答える
4170 参照

c++ - cppunit と xcode プロジェクトの vtable の問題

zxing iphone プロジェクトをビルドし、cppunit-1.12.1 で作成されたテスト スイートを実行しようとしています。プロジェクト内に cppunit-1.12.1 コードをコピーし、アクティブな SDK を 10.5 に変更すると、cppunit および zxingcore ターゲットをビルドできますが、zxingcore-tests ターゲットをビルドしようとすると、次のエラーが発生します。これは vtables に関連しているようで、ライブラリのアーキテクチャ タイプに関係する奇妙な警告が表示されます。

基本的に、すべての行の前に > を挿入することなくフォーマットをエスケープすることにより、これをフォーマットする良い方法はありますか? <pre>プレビューではうまく機能するタグを使用しましたが、最終的なレンダリングでは機能しませんでした。フォーマットを尊重せず、テキストを切り取っていませんでした。誰かから提案があり次第、フォーマットを変更します。

....many more of these warnings...

そして今、エラー

0 投票する
1 に答える
842 参照

c++ - ostream で使用するための operator<< のオーバーロード

プログラム内のクラスをテストするために CPPUnit を使用しています。このクラス ( SCriterionVal) は、多くの型の変換演算子を持っているため、ややユニークです (これは本質的に動的型値クラスです)。を使用してテストするテスト ケースをコンパイルすると、CPPUnit ヘッダー ファイルの 1 つから「あいまいです」CPPUNIT_ASSERT_EQUAL()というコンパイル エラーが発生します。私の型で構造体をoperator<<インスタンス化しているようで、その構造体には を使用して動作するメソッドがあります。assertion_traitstoString()operator<<OStringStream

SCriterionValで利用可能なさまざまな変換があり、その一部が定義さoperator<<れているため (組み込み型など) 、エラーではなくあいまいであると思います。SCriterionValこの状況を修正するために、次のシグネチャを使用してヘッダーに非メンバー関数を作成しました。

署名は完全に一致する必要があるため、あいまいさが解決されると考えました。そのような幸運はありません。ここで何が間違っていますか?テンプレートを自分のタイプに特化できると思いますがassertion_traits、テスト フレームワークに対応するだけでなく、自分のクラスをストリームに入れる方法を提供するという、より一般的な問題を解決できることを望んでいました。

0 投票する
1 に答える
1355 参照

c++ - Cpp単位の漏れ

valgrind で回帰テストを実行すると、次のようなレポートが表示されます。

これは、スイートに追加されたテストがメインが終了する前に削除されないためだと思います。

これは私がテストを登録する方法です:

これらのテストの登録を解除するにはどうすればよいですか?

0 投票する
2 に答える
2998 参照

c++ - CPPUnitでユニットテストをオフにする方法

私は(最終的に)アプリをCPPUnitで単体テストし、CruiseControl.NETでテストを実行してテスト出力を表示しています。ただし、常に失敗するテストがいくつかあるため、CruiseControlは常にビルドを失敗としてマークします。これらの常に失敗するテストを「オフにする」、「スキップする」、「無視する」方法はありますか?現在ビジネス上の理由で修正できないアプリの有効なエラーを指摘しているため、ソースでコメントアウトするだけではなく、将来のリリースで対処できる可能性があります。可能であれば、テストを実行してその出力を確認できるようにしたいのですが、CPPUnitに失敗としてカウントさせないようにします(または、CruiseControlレベルでは無視することもできます)。

0 投票する
5 に答える
5352 参照

c++ - CPPユニットの使用方法

初心者向けに、CppUnitの使用について説明している優れた本やオンラインサイトはありますか?

0 投票する
8 に答える
18831 参照

c++ - C++ユニットテストライブラリ

私はcppunitに出くわしましたが、それは非常に使いやすいようには見えませんでした(おそらく、C++がJava/ C#のように機能しないため、私はハードに見えませんでした)。広く使用されている単純な代替手段はありますか?

実際、cppunitはC ++の標準的な単体テストフレームワークですか