問題タブ [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.
c++ - CppUnit テスト カバレッジ (win32 および Unix) を測定するにはどうすればよいですか?
広範な単体テスト (CppUnit を使用) を含む非常に大きなコード ベースがあります。これらのテストによって実行されるコードの割合を計算し、(理想的には) ライブラリごとまたはファイルごとに実行されたコードの量を示す何らかのレポートを生成する必要があります。
ここにキッカーがあります: これは完全に無人で実行する必要があり (最終的には継続的インテグレーション ビルド内で)、クロスプラットフォームである必要があります (まあ、少なくとも WIN32 と *nix)。
これを行うのに役立つツールまたはツールのセットを提案できる人はいますか? 私は CppUnit から変更することはできません (変更したくもありません。お尻を蹴ります)。
乾杯、
unit-testing - CPPUnit を使用した例外からの回復
私はユニット テスト フレームワークとして CPPUnit を使用してきましたが、現在は自動化されたビルドおよびパッケージ システムで使用しようとしています。ただし、単体テストの実行中にクラッシュが発生した場合 (null ポインターの逆参照など)、残りの自動化が停止するという問題がありました。
CPPUnit が例外から回復し、テストの失敗を記録してから、単体テスト プロセスを終了するのではなく、正常に存在する方法はありますか? null ポインターの逆参照に固有のアプローチでさえ、私が抱えていた問題の約 90% を占めているため、役に立ちます。
テクノロジーに特化するために、私は Windows システムでメイクファイルを使用しています。
c++ - C++ 単体テスト フレームワークの比較
C++ 単体テスト フレームワークの推奨事項に関して既にいくつかの質問があることは知っていますが、フレームワークの 1 つを推奨するだけで、(機能) 比較に関する情報を提供していないため、すべての回答は役に立ちませんでした。
最も興味深いフレームワークは、CppUnit、Boost、および新しい Google テスト フレームワークだと思います。誰もまだ比較をしたことがありますか?
c++ - CppUnit を使用したテストのパラメーター化
私の組織は CppUnit を使用しており、異なるパラメーターを使用して同じテストを実行しようとしています。テスト内でループを実行することは、失敗するとテストが中止されるため、適切なオプションではありません。TestDecorator
andを見てきましたTestCaller
が、どちらも実際には適合していないようです。コードサンプルは役に立ちます。
unit-testing - Visual C++TDDセットアップ
私はこれまでVisualStudioをあまり使用していませんでした。私は暇なときに個人的なプロジェクトを開始しました。Java開発で大きなメリットがあったので、テスト駆動開発を使用したいと思います。私はかなり前にこのプロジェクトを開始し、CppUnitを使用しました。おそらく他のより良いフレームワークがあることは知っていますが、これはすでに実施されているものです。
私のVisualStuido2005ソリューションには、2つのプロジェクトが含まれています。単体テストがアプリケーションコードのすぐ横にある場合は、正常に機能しました。プロジェクトの規模が大きくなるにつれて、これは非常に面倒でエレガントではなくなりました。私は自分のソリューションの下で単体テストを収容するための新しいプロジェクトを作成しました(したがって、現在3つのプロジェクトがあります)。ソリューションを構築しようとするまで、すべてがうまくいきました。すべてがコンパイルされましたが、単体テストプロジェクトはリンクできませんでした。出力には、テストで呼び出されるすべての関数のように見えるものに対して、51個の「未解決の外部シンボル」エラー(LNK2019)が表示されます。
私が推測できる限り、問題はVisualStudioが作成するディレクトリ構造です。各プロジェクトは独自のディレクトリを取得し、その下に作成されるオブジェクトファイルと実行可能ファイルがあります。問題は、ヘッダーファイルが各単体テストに適切にインクルードされているのに、リンカがcppファイルを見つけることができないことです。これは、それらが異なるディレクトリにあるためです。呼び出された関数の実装が見つからない場合、2019エラーが発生します。
私は問題の評価に正しいですか?どうすれば修正できますか?プロジェクトを完全に再編成する必要がありますか、それともリンカーの単純な構成ですか?
ありがとう
c++ - 単体テストのデストラクタ?
デストラクタを単体テストする良い方法はありますか? たとえば、この(不自然な)例のようなクラスがあるとします:
#ifdef TEST で hpp ファイルを混乱させたり、カプセル化を壊したりせずに x が削除されることを確認するために、これを単体テストする良い方法はありますか? 私が見ている主な問題は、特にデストラクタが呼び出された時点でオブジェクトがスコープ外にあるため、 x が本当に削除されたかどうかを判断するのが難しいことです。
linker - cppunit リンクエラー
テスト スイートを cppunit に対してコンパイルすると、次のリンク エラーが発生します。
提供された例は問題なくリンクしているため、この問題はわかりません。
マクロを使用してテストを登録しています。
私のテストクラスは CPPUNIT_NS::TestFixture から派生しています
ここに「メイン」コードがあります:
c++ - boost::test の CppUnit プロテクターと同等ですか?
と の両方を C++ 単体テストに使用CppUnit
しboost::test
ました。boost::test
主に、自動テスト マクロがテストをセットアップする労力を最小限に抑えるためです。しかし、私が本当に見逃していることが 1 つありCppUnit
ます。それは、実行されたすべてのテストを自動的にラップするインスタンスである、独自の「プロテクター」を登録する機能です。(技術的には、テスト「リスナー」をインストールすると、各テストをプロテクタースコープにラップできます)。
私は過去に、ユニットテストの予期しない副作用を監視するために、これらが非常に貴重であることを発見しました (たとえば、コードをチェックしても浮動小数点のユニット状態フラグが変更されていないなど)。boost::test
おそらく最も近いかもしれませんが、ドキュメンテーションには同等のものはありBOOST_FIXTURE_TEST_CASE
ません。
で CppUnit のプロテクターと同じことを達成するための最良の方法について何か提案はありboost::test
ますか?
boost::test
(の実装についてはまだ詳しく調べていませんが、そのようなものであればCppUnit
、プロテクター自体に非常によく似たものを使用する必要があります)。
c++ - 単体テスト用の「エコー」デバイス
現在、ハードウェア通信ポートをテストするプログラムの CPPunit テストをいくつか作成しています (はい、テスター アプリの単体テストを作成しています ;-) )。私がテストしているクラスの 1 つは、基本的にデバイスのファイル記述子のラッパーです。ファイル記述子を作成read()
してwrite()
呼び出します。 Linuxにデバイスファイル/ドライバーがあり、それをwrite()
使用すると、そこread()
から書き込んだものを読み戻すことができます(FIFOキューデバイスのように)? このデバイス ファイルがあれば、ラッパーの実際のデバイス ファイルの代わりにそれを配置するのは非常に簡単で、実際のハードウェアで発生する可能性のある「ループバック」シナリオを簡単にエミュレートできます。
基本的に私が探しているのは、一種の仮想"/dev/echo"
デバイスです。
例: デバイスは次のように動作します。
c++ - Cppunit; テストするクラスをコンパイルしようとしています
私はC++とCppunitの両方にまったく慣れていません。私は小さなcppunitテストをコンパイルしようとしています。しかし、私は成功しません。
これがソースコードです。ここで何が欠けていますか?
----- Coordinate.h ------------------------------------------ -----------------------
----- Coordinate.cpp ------------------------------------------ -----------------------
----- CoordinateTest.h ------------------------------------------ -----------------------
----- CoordinateTest.cpp ------------------------------------------ -----------------------
----- ftest.cpp ------------------------------------------ -----------------------