問題タブ [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.

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

unit-testing - CppUtest: モック関数からカスタム構造体を返す方法

いくつかの C 組み込みプロジェクトで CppUTest を使い始めています。今、私はシステムへの模擬呼び出しを扱っています。Cの典型的な型を渡す方法を学んだ後、例:

正しく動作する例:

コードのモック ファイル部分:

この模擬呼び出しに関連するコードのファイル部分をテストします。

これを理解する上で問題はありません。

しかし今、私は構造体をテストからモック呼び出しに渡そうとしています。これには、モックが(テスト中の本番コードの)呼び出し関数に送信する必要のあるフィールドのリストが必要です。ケースは、いくつかのシステムコールで関数をテストしています。そして、これは次のようなものです:

テスト中のコード:

今のアイデアは-モックを使用した私のテストファイルにあります-:

私の質問は、この mock.expectOneCall("HAL_AS393x_GetStatus") の mock.actualCall を構築して、定義された型の構造体 (HAL_AS393X_Status) を返さなければならないと言うにはどうすればよいですか? 可能であれば、または存在する場合は、次のようなことを行うための情報を探しています。

XXX の場所だけに必要なモック構文は何ですか?

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

testing - Cpputest: expectNoCall をコンパイルして使用する方法は?

私は構文を書きました:mock().expectNoCall("productionCode")Cpputest.orgページが言うように。しかしコンパイラは、mocksupport クラスはこのタイプの順序をサポートしていないと言っています。

どのように使用できますか?ヘッダーにファイルを含める必要がありますか? 現在、私はそれらをあざけるために持っています:

問題は、1 つの具体的なシステム コールを無視したいということです。私はそれをテストしたくありません。

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

c++ - Mock().enable と disable は、cpputest lib を使用してテスト グループ プロジェクトをコンパイルすると認識されません。

テスト グループ プロジェクトをコンパイルしようとしていますが、出力で理解できない次のコンパイル エラー以降、成功していません。

コンソール出力:

プロジェクト コードの一部:

グループ コード .c ファイルをテストします。

mock.c ファイルに含まれるもの:

cpputest では、有効/無効が考慮されておらず、不明のようです。私が見逃したのは愚かなことかもしれないと思います。しかし、今では何のことかわかりません。

Cpp テスト ファイル内で C ソース関数をテストしていることはわかっています。このため、extern c インスタンスを使用していました。dis/en は認識されませんが、Mock().expectonecall は認識されます (コンパイル エラーは発生しません)。

  • したがって、現在のケースでモックを有効/無効にする別の方法はありますか?
  • cpputest 関連の依存関係などを含める方法で何らかのエラーが見られますか? 可能であれば、それらを修正する方法は?
0 投票する
1 に答える
192 参照

unit-testing - cpputest を使用した単体テストで依存関係を挿入する方法

関数呼び出しに「依存性注入」を実行しようとする単体テスト ( cpputest 内) を作成しています。これは、単体テストがテスト対象のファイル内に配置された実際の関数を呼び出す必要がある場合、関数呼び出しを「偽の」実装にリダイレクトする必要があることを意味します。実際には、関数ポインタを実際の関数に割り当て、「偽の実装」で上書きしています。以下のように構成されています。

コンパイラ エラーが発生します。

私はすでにいくつかの組み合わせを試しましたが、毎回同じエラーです。解決策はおそらく単純ですが、私はそれを見落としています。それで、私はここで何が間違っていますか?