問題タブ [cmocka]

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 投票する
2 に答える
2044 参照

c - cmockaで関数ラッピングを一時的に有効および無効にする正しい方法は?

cmockaライブラリを使用して、組み込みの c コードをテストしています。ドキュメントによると、__wrap_プレフィックスを使用して関数をモックするので、単体テストを分離できます。ただし、これを行うと、関数へのすべての呼び出しは永遠にラップされた関数に移動します。特定の状況で実際の機能を再度有効にして、テストしたり、他の機能が使用できるようにしたりするにはどうすればよいですか? 唯一の方法は、グローバルフィールドをスイッチとして使用して実際の関数を次のように呼び出すことです。

それは正しい方法ですか?

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

c - サンプル CMocka テストの実行時に「`_cmocka_run_group_tests' への未定義の参照」

CMocka テスト フレームワークをインストールし、サンプル コードを試しました。

しかし、コンパイルしようとすると、次のエラーが発生します。

私は何が欠けていますか?

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

c - cmocka フリー操作と例外のキャッチ

私はcmockaライブラリーから冒険を始めましたが、2 つの質問があります。

  1. free() 操作が正しく行われたかどうかを確認することはできますか? つまり、ツリー構造をクリーンアップする関数をテストしたいと思います。test_free() について読んだことがありますが、正直なところ、その背後にある考え方がわかりません。

  2. 2 つ目は、標準ライブラリの例外をキャッチする場合です。function については知っていますexpect_assert_failureが、どのように使用しますか? たとえば、セグメンテーション違反をスローする何かをしたいのですが、とにかくテストに合格したいと思います。

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

c - cmocka のインストール中に Mac OS X で RPATH の問題を処理するにはどうすればよいですか?

cmockaMac OSX Yosemite 10.10.3 で単体テスト用のライブラリをインストールして実行しようとしていますが、設定に問題がありRPATHます。

アップデート:

cmocka.h@baf のおかげで、次のように手動で CMakeLists.txtに含めることができました。

しかし、なぜ手動で行わなければならないのでしょうか。


私はすでにそれをインストールするさまざまな方法を試しました:

私がこれまでに行ったこと:

  1. ここから cmocka をダウンロードします。バージョン 1.0。

  2. tar xvf cmocka-1.0.1.tar.xz

  3. cd cmocka-1.0.1mkdir buildおよびcd build

  4. sudo cmake ..
    ここに次のようなメッセージが表示されます。

-- 設定完了

CMake 警告 (開発者):

ポリシー CMP0042 が設定されていません: MACOSX_RPATH はデフォルトで有効になっています。ポリシーの詳細については、「cmake --help-policy CMP0042」を実行してください。cmake_policy コマンドを使用してポリシーを設定し、この警告を抑制します。

MACOSX_RPATH は、次のターゲットに対して指定されていません。

cmocka_shared

この警告は、プロジェクト開発者向けです。-Wno-dev を使用して抑制します。

質問 1:rpath上記のような警告が表示されないようにするにはどうすればよいですか?

  1. 須藤make

  2. 須藤make install

  3. cmocka今すぐインストールする必要がありますよね?


ライブラリcmakeを使用している私のプログラムを実行しています。cmocka

だから今cmake、私は自分のプログラムを実行し、メインCMakeList.txtファイルには次のような行があります:

しかし、この段階では警告は表示されないので、コンピューター上でfind_libarary(CMOCKA cmocka)正常に検出cmockaされたと思います。

make私のプログラムのために走っています。

実行make中に次のようなエラーが発生します。

だからきっとcmocka見つからない…。

質問 #2:cmockaライブラリが見つからないのはなぜですか?


その他の注意事項:

  1. 走ってみた

    /li>

しかし、それは役に立ちませんでした。MacではなくLinux向けのソリューションだと思います。

  1. ここの公式ドキュメントからRAPTHMacについて何かを学ぼうとしました: http://www.cmake.org/Wiki/CMake_RPATH_handling。しかし、私はほとんど理解できず、問題の解決策を思いつくことができませんでした。cmake

  2. cmockaを使用してインストールしようとしましbrewたが、同じ結果が得られました。

  3. RPATHさらに、 SO 、リンク、およびに関する多くの質問を読みましcmockaたが、適切な解決策も見つかりませんでした。それでも、関連するスレッドのリストは次のとおりです。

  4. 私は走っotool -L cmockaた。これが私が得たものです:

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

c - Cmocka テストで出力が表示されない

cmocka サンプル ファイルをダウンロードし、すべての指示に従いました。すべてのテスト ファイルが正常に生成され、実行できますが、コンソールに出力が表示されません。環境変数を変更しよCMOCKA_MESSAGE_OUTPUTうとし、独自のテストを作成してコンパイルしようとし、cmocka を再コンパイルして再インストールしようとしましたが、テストで何も出力されませんでした。私はWindows 7 32ビットで作業しているので、cygwinも試してみることにしましたが、cygwinはパブリックライブラリを見つけることができないとスローするだけなので、この調査のフォークを放棄しました-結局のところ、cmockaはWindows cmdでも正常に動作するはずです. テストでコンソールに何かを出力する方法を知っている人はいますか?

編集

コンパイル/リンクに問題があった場合に備えて、メイク情報を追加していますが、何も表示されません (エラーは発生せず、tests.exe ファイルが正しく出力されます)。

メイクファイル

注 1: cflags の多数のパスは絶望から解放されています。最初は最初のパスだけを使用していました。

注 2: Netbeans または cygwin でこのスクリプトを実行しようとすると、スラッシュに変更delrm -fて切り替えます。出力は上記のようになります。make はエラーなしでtests.exe実行され、.

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

c++ - JUnit形式でCMockaレポートを取得するには?

cmocka を使用して、画面にデフォルトの結果を表示できます。単体テストの結果を JUnit 形式で取得したいと考えています。

CMocka は、env 変数CMOCKA_MESSAGE_OUTPUTまたは API を使用して JUnit 形式をサポートします。cmocka_set_message_output(CM_OUTPUT_XML);

しかし、まだxmlファイルは生成されません。JUnit形式で結果を取得するのを手伝ってくれる人はいますか?

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

c - cmocka との連携方法を教えてください。

UbuntuでEclipseを使用しています。

cmockaをインストールしました:

簡単なテスト プロジェクトをビルドすると、リンカー エラーが発生します。このコードから

次のエラーが表示されます。

したがって、cmocka ライブラリをリンカー パスに追加する必要があるようです。しかし、私は得る

libcmocka.so.0.3.1、libcmocka.so.0、libcmocka.so でも同じ結果が得られます。

明らかに、私は非常に基本的なことを間違っていますが、何ですか?

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

c - Visual Studio Cリンカーラップオプション?

この記事からC のモック オブジェクトを使用した単体テスト:

これは--wrap、ラップされた関数の名前を引数として受け取るリンカー オプションを使用して行われます。テストが gcc を使用してコンパイルされた場合、呼び出しは次のようになります。

$ gcc -g -Wl,--wrap=chef_cook waiter_test.c chef.c

Visual Studio で C プロジェクトをコンパイルするときにこれを行うにはどうすればよいですか?