問題タブ [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 - CppUTest がターゲットで実行されていない - 「偽の」登録方法
ターゲット ハードウェアで実行せずに組み込み C コードの単体テストを行っています。コードの一部を次に示します。
関数write_to_i2c()は、特定のレジスタに値を書き込みます。関数read_from_i2c()は、レジスタから値を読み取ります。さらに、変数tempReadbackを使用して、読み戻された値が書き込まれた値と同じかどうかを比較しています。これまでのところ問題なく、これはターゲット ハードウェアで動作します。現在、ターゲット ハードウェア (Software in the Loop) でコードを実行せずに Uni テストを行っています。つまり、式tempReadback == msg->valueが真になることはなく (tempReadback は 0)、毎回ステートメントsomethingBで実行されます。レジスタの読み取りを偽造する方法はありますか? フレームワークとして CppUTest を使用しています。
感謝します!
c++ - CppUTest でグローバル変数をモックする方法はありますか?
テスト関数で使用する静的グローバル変数をモックする方法はありますか? またはそのための回避策はありますか?
このような状況の例を以下に示します。
c++11 - C++11 バージョンでビルドする CppuTest
Ubuntu にインストールさg++ 4.9.0
れた (実験的) バージョン (このバージョンで提供される特定の機能を使用しています)
コードをビルドするときにcmake
スクリプトから使用すると、正しくビルドされます。以下のgccには、g++ がインストールされているパス (/mnt...) が含まれています。
ここで、コードの単体テストをビルドするために CppuTest を作成すると、次のエラーが発生します。
CppuTest の makefile には が含まれていCPPUTEST_CPPFLAGS += -std=c++1y
ます。私が言ったように、C++ の実験的なライブラリは私の「通常の」コードで正しく構築されているため、この makefile にはいくつかのフラグが欠けていると思います。何が欠けていますか?
c++ - CppUTest を使用してオブジェクトを返すメソッドをモックする方法
私は次の方法を持っています:
テストで準備された QMap を返すことができるモックを作成しようとしています:
しかし、戻り値をモックする方法がわかりませんか? TEST
関数で次のようにモックを使用したいと思います。
CppUTest モッキングのドキュメントでそのような例を見つけることができません。.andReturnValue
また、この形式でも機能しないことも知っています。
c++ - Qt と Boost を使用してアプリケーションの CppUTest テストをコンパイルするときの奇妙な動作
私は次の問題を抱えています。.so ライブラリをコンパイルしようとすると、すべて正常に動作します。
たとえば、たとえばを使用する実行可能ファイルを作成しようとすると、logger.cpp
. test file エラーの壁が表示されます。完全なログはこちらです。しかし、最も面白いのは、開発者のコンピューターでコンパイルすることです。コンパイラのバージョン、cmake のバージョンを確認しましたが、すべて同じです。cpputest のバージョンは同じではありませんでした。
おそらく、あなたの誰かがそのような問題に直面し、私たちが間違っていることを知っているでしょう.
c - C の TDD。CppUTest で最初のテストをコンパイルして実行するにはどうすればよいですか?
私は組み込み C のテスト駆動開発を始めており、「組み込み C のテスト駆動開発」という本を読み始めました。この本では、Unity と CppUTest という 2 つの開発システム テスト環境が推奨されています。
したがって、両方のコードをダウンロードし、Cygwin をダウンロードしてインストールし、コンパイルすることにしました。ただし、すべてをダウンロードすると、この種の適切なドキュメントがないため、本当に迷子になります。
" 1- 最初に XXX に移動します。2- XXX を実行します。3- XXX ファイルを XXX フォルダーにコピーします。4- 出来上がり、すべて設定されました"
CppUTest と Unity をダウンロードしたときに唯一見つけたのは、makefile などを含む大量のフォルダーと、私にとっては中国語で書かれたような README でした。私が得た最も遠いものは、CppUTest をコンパイルしてそのテストを実行することでした。
それで、ここに私の質問があります。Module.c、Module.h、および ModuleTest.cpp が既にあるとします。コンパイルしてテストを実行するにはどうすればよいですか?
このツールの使用経験があり、ヒントやアドバイスをいただけないでしょうか。
ありがとうございます。よろしくお願いします。
c++ - CppUTest 単体テスト フレームワークの複数定義の例外
NDA に違反する可能性のあるあらゆる種類のコード共有を保護するだけでなく、できるだけ多くの人に適用できるように、これを純粋に最小限の例にしようとします。これで大丈夫です!
私は CppUTest と CppUMock (gcc/g++ でコンパイルし、CMake で作成した makefile) を Gitlab 継続的インテグレーション ソフトウェアと組み合わせて使用し、将来のコミットとソフトウェアのリリースのための単体テスト環境を作成しています。しかし、私は少し問題に遭遇しました。次のフォルダー設定があるとします (/tests フォルダーの内容以外は、最小限の変更しかできません)。
CMakeLists ファイルには、inc フォルダーのインクルード、src フォルダーのコンパイル、tests フォルダーのコンパイルが含まれます。ただし、driver2.c が driver1.c で定義されたメソッドに依存しているとします。driver2 のメソッドへの呼び出しの結果を通常どおりにテストできるため、モックのセットアップがない場合はこれで問題ありません。ただし、driver2 が method1 を正しく (CppUMock を使用して) 呼び出すことを確認できるように、driver1 の method1 関数をモックしたいとします。driver1 がコンパイルされていない場合、これは通常は問題ありませんが、test_driver2.cpp ファイルに次のようなものを追加します。
driver1.c の実際の method1 と衝突し、次のようなリンカ エラーが発生します。
コメンターの要求に従って、インクルード構造は次のようになります。
method1 は driver1.h で宣言され、driver1.c で定義されます。これらのファイルを編集できません。
リクエストに応じて詳細を追加します。
この嘲笑の問題を回避する最善の方法は何ですか?
c - 組み込みソフトウェアのテスト、ビットの状態とその状態で費やされた時間をテストする方法は?
GPIO ピンを操作してモールス符号を送信する関数を作成しました。このピンは、DOT を通知するために一定時間 High に設定されます。次に、一定時間ローに設定して、DOT-DASH スペースなどを通知します。
したがって、問題は、たとえば「CBA」などのシーケンスを送信すると、プログラムがそれを実行し、cpputest コードからはピンの最終状態しかテストできないことです。各状態で費やされた時間とビットの状態を確認するテストを書きたいと思います。そんなことがあるものか?
cpputest - 同じテストファイルで実行時にモックと実際の関数を呼び出すことができる CppUtest の方法はありますか?
例えば:
プロダクション.cpp
TestProduction.cpp
私の理解では、 func1() がモックされたとき、実際の関数をテストする方法はありません。
以下のサンプル コードは、私がやろうとしていることの単なるアイデアです。
内部で多くの関数を呼び出す多くの関数をテストする必要があるためです。時々、他の関数の実際の結果を気にしないので、それを嘲笑しましたが、テストしている関数内で呼び出すときに実際の関数の動作をテストしたい場合、その関数は実行できないため、実行できませんすでに嘲笑されています。
また、本番コードを変更せずに、テスト コードのみを変更できることを願っています。