問題タブ [cpputest]
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++ - 演算子 new への未定義の参照
ccptest を使用して、単純な単体テスト実行可能ファイルを作成しようとしています。cpputest フレームワークを静的ライブラリに組み込みました。現在、それを実行可能ファイルにリンクしようとしています。ただし、関連するコードが原因で、かなり複雑な Makefile セットアップに縛られています。
これは私のコマンドラインです:
次のような多くのエラーが発生します。
何が原因なのかわかりません。C++ では無料で operator new を取得できませんか?
c - CppUtestのリンクエラーの例
なぜこれらのエラーが発生し、どうすれば解決できますか?
c++ - CPPUTestのデバッグ-C++
私はTDDを学び、EclipseでCppUTestを使用しています。しつこいセグメンテーション違反が発生するコードをデバッグする方法はありますか?
ありがとう
c - 単体テスト C モジュールの静的変数
C モジュールがあり、少しリファクタリングしたいと考えています。(module.h ファイルに) 非表示にされていないグローバル変数と構造がいくつかあります。この変数はいくつかのテストケースで使用していますが、他の場所では使用していないため、静的に設定することをお勧めします。私のテストケースでは、これらの変数を外部化し、テスト値を入力します。しかし、それらが静的変数になる場合、テストケースからそれらに到達できません。この変数を非表示にしたいので、getter および setter メソッドを作成して .h ファイルに配置したくありません。
.c ファイルをテスト ケースに含めると、静的変数が表示されます。これらの変数を埋める他の方法はありますか?
私は cygwin と gcc を使用しています。テスト フレームワークは CppUtest です。
前もって感謝します。
c - アーカイブに対してリンクするときに「複数の定義」エラーが発生するのはなぜですか?
CppUTestを使用して、fornol.c
ソースファイルで定義されたCコードをテストしています。そのファイルは、主要な生産main()
関数を定義します。
関数もあるAllTests.cpp
ファイルもありますが、単体テストを実行する場合にのみ使用することになっています。main()
main()
AllTests.cpp
.o
ファイルにコンパイルされますが、アーカイブfornol.c
にコンパイルされます。libfornol.a
次に、CppUTestはすべてをリンクしようとしますが、代わりに次のようになります。
で定義され、アーカイブに存在するmain()
関数がで定義されたものと競合しているように見えます。しかし、私の理解では、アーカイブ/ライブラリファイルは、特定のシンボルがまだ参照されていない場合にのみ検索されます。したがって、すべての定義がアーカイブ/ライブラリファイルにある場合は、同じシンボルを複数回定義しても問題はありません。fornol.c
libfornol.a
main()
AllTests.cpp
私はここで何が間違っているのですか?
xcode4 - CppUTest サンプルのビルドが失敗する
マック初心者です!xcode4.2 をダウンロードし、CppUTest-v3 をビルドしようとしました
1)私が作るとき、私は次のログを持っています
llvm make コマンドを使用してビルドできることがわかりました
2)次に、examples ディレクトリに移動します。次のエラーが発生しました。調べてみましたが解決方法がわかりませんでした。あなたの助けに感謝します。
c++ - gcc/linux: CppuTest は静的ベクトルを使用してメモリ リークを示しますが、誤検知ですか?
xxxx.h ファイル:
xxxx.cpp で
これらのベクトルは静的コールバック関数で処理されるため、それらも静的である必要があります。
cpputest で、これらのベクトルのいずれかに何かを追加しようとすると、失敗が発生します。
ベクトルに追加されるものは自動変数であり、通常の関数で発生します。
ベクトルは、テスト ケースの最後にクリアされます。
(yyyy() はシングルトン xxxx オブジェクトへのポインタを返します)
ページhttp://blog.objectmentor.com/articles/2010/02/04/cpputest-recent-experiences では、同じ種類のメモリ リークについて説明しています。
「これは誤検知です。これは 1 回限りの割り当てであり、C++ メモリ割り当てと静的初期化の副作用です。」
私の質問は次のとおりです。この失敗は本当に偽陽性ですか?
br エスコ
unit-testing - レガシ C コードのテスト時に TEST_GROUP_BASE 共有テスト グループを使用しようとするとリンカー エラーが発生する
TEST_GROUP_BASE を使用して共有基本クラスを作成することにより、コードの重複を削減しようとしました。この TEST_GROUP_BASE を複数のテスト クラスで使用しようとすると、「getwchar」と「putwchar」について不平を言うリンカ警告が表示されます。一貫性のない dll リンクと、これらの関数の複数の定義、および他の多くの「char」/ 'wchar' ペア (例: strchr/wcschr、strpbrk/wcspbrk)。TEST_GROUP_BASE マクロを使用するテスト ファイルを 1 つだけ含めると、リンカ エラーは表示されません。
基本クラスは、すべてのメンバー関数がインライン化された .h ファイルで TEST_BASE として定義されます。この .h ファイルは、共有 TEST_BASE を組み込むために使用される TEST_GROUP_BASE マクロを使用して、派生テスト ファイルに含まれます。私は何かを逃したことがありますか?
TEST_GROUP_BASE が使用されている例を見つけることができなかったので、構成の重要な部分を見逃したかどうかはわかりません。レガシ C コードをテストしていますが、c/c++ が正常にリンクされていることを示唆する単純なテストにパスするため、製品コードへのすべての参照は extern "C" 中かっこ内で行われます。
誰かが考えられる原因を提案したり、TEST_GROUP_BASE が他の場所でどのように使用されているかを示すオープンソースの例を教えてもらえますか?
開発環境はVS2010です。
gcc - CPPUTest 実行中の libstdc++-6.dll エラー
組み込み C 単体テスト用に CPPUTest を使用して TDD を学習しようとしています。Eclipse CDT で gcc を使用して基本的な C コードをコンパイルできました。CPPUTest に付属の c++ ファイルをコンパイルしようとしていました。私が実行しようとしているマシンは、64 ビットの Windows 7 OS です。gcc の sourceforge から i686-w64-mingw32 バイナリ パッケージをインストールしました。
テスト cpp ファイルのコンパイルと make all を使用したリンクは成功しました。しかし、テストの実行を開始すると、次のエラーが発生しました。
「libstdc++-6.dll がコンピューターにないため、プログラムを開始できません。問題を解決するには、プログラムを再インストールしてください。」
しかし、mingw/mingw/lib の下に libstdc++6.dll があります。これをパスに追加しました。それでも、テストを実行していないようです。
これを修正するための提案は役に立ちます。
c++ - Eclipse+CDT: テスト プロジェクトでテスト済みプロジェクトのファイルをビルドおよびリンクする
Eclipse で組み込み TDD 環境をセットアップしようとしています:
- GNU-ARM クロス コンパイル用に設定されたアプリケーション プロジェクト
- Cygwin 経由で CppUTest をビルドする CppUTest プロジェクト (うまく機能)
- 単体テスト、テスト グループ、テスト ランナーを格納するテスト プロジェクト
私が抱えている問題は、テスト プロジェクトが単体テストを .o ファイルにビルドするが、テスト済みの .h/.c ファイルをビルドしないため、不足しているオブジェクトへの未定義の参照でリンカーが失敗することです。
Application プロジェクトのオブジェクト ファイルやそのプロジェクトのビルドに依存することはできません。なぜなら、これらは ARM EABI オブジェクトにクロス コンパイルされているからです。アプリケーション プロジェクトのソース ファイルもビルドするために、テスト プロジェクトが必要です。Eclipse にこれを行うように指示する方法はありますか? または、テスト済みファイルをテスト プロジェクト内のソース ツリーにコピーするために、ビルド前のスクリプトを設定する必要がありますか?