問題タブ [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.
c - cmockaで関数ラッピングを一時的に有効および無効にする正しい方法は?
cmockaライブラリを使用して、組み込みの c コードをテストしています。ドキュメントによると、__wrap_
プレフィックスを使用して関数をモックするので、単体テストを分離できます。ただし、これを行うと、関数へのすべての呼び出しは永遠にラップされた関数に移動します。特定の状況で実際の機能を再度有効にして、テストしたり、他の機能が使用できるようにしたりするにはどうすればよいですか? 唯一の方法は、グローバルフィールドをスイッチとして使用して実際の関数を次のように呼び出すことです。
それは正しい方法ですか?
c - cmocka フリー操作と例外のキャッチ
私はcmockaライブラリーから冒険を始めましたが、2 つの質問があります。
free() 操作が正しく行われたかどうかを確認することはできますか? つまり、ツリー構造をクリーンアップする関数をテストしたいと思います。test_free() について読んだことがありますが、正直なところ、その背後にある考え方がわかりません。
2 つ目は、標準ライブラリの例外をキャッチする場合です。function については知っています
expect_assert_failure
が、どのように使用しますか? たとえば、セグメンテーション違反をスローする何かをしたいのですが、とにかくテストに合格したいと思います。
c - cmocka のインストール中に Mac OS X で RPATH の問題を処理するにはどうすればよいですか?
cmocka
Mac OSX Yosemite 10.10.3 で単体テスト用のライブラリをインストールして実行しようとしていますが、設定に問題がありRPATH
ます。
アップデート:
cmocka.h
@baf のおかげで、次のように手動で CMakeLists.txtに含めることができました。
しかし、なぜ手動で行わなければならないのでしょうか。
私はすでにそれをインストールするさまざまな方法を試しました:
私がこれまでに行ったこと:
ここから cmocka をダウンロードします。バージョン 1.0。
tar xvf cmocka-1.0.1.tar.xz
cd cmocka-1.0.1
、mkdir build
およびcd build
sudo cmake ..
ここに次のようなメッセージが表示されます。
-- 設定完了
CMake 警告 (開発者):
ポリシー CMP0042 が設定されていません: MACOSX_RPATH はデフォルトで有効になっています。ポリシーの詳細については、「cmake --help-policy CMP0042」を実行してください。cmake_policy コマンドを使用してポリシーを設定し、この警告を抑制します。
MACOSX_RPATH は、次のターゲットに対して指定されていません。
cmocka_shared
この警告は、プロジェクト開発者向けです。-Wno-dev を使用して抑制します。
質問 1:rpath
上記のような警告が表示されないようにするにはどうすればよいですか?
須藤
make
須藤
make install
cmocka
今すぐインストールする必要がありますよね?
ライブラリcmake
を使用している私のプログラムを実行しています。cmocka
だから今cmake
、私は自分のプログラムを実行し、メインCMakeList.txt
ファイルには次のような行があります:
しかし、この段階では警告は表示されないので、コンピューター上でfind_libarary(CMOCKA cmocka)
正常に検出cmocka
されたと思います。
make
私のプログラムのために走っています。
実行make
中に次のようなエラーが発生します。
だからきっとcmocka
見つからない…。
質問 #2:cmocka
ライブラリが見つからないのはなぜですか?
その他の注意事項:
走ってみた
/li>
しかし、それは役に立ちませんでした。MacではなくLinux向けのソリューションだと思います。
ここの公式ドキュメントから
RAPTH
Macについて何かを学ぼうとしました: http://www.cmake.org/Wiki/CMake_RPATH_handling。しかし、私はほとんど理解できず、問題の解決策を思いつくことができませんでした。cmake
cmocka
を使用してインストールしようとしましbrew
たが、同じ結果が得られました。RPATH
さらに、 SO 、リンク、およびに関する多くの質問を読みましcmocka
たが、適切な解決策も見つかりませんでした。それでも、関連するスレッドのリストは次のとおりです。私は走っ
otool -L cmocka
た。これが私が得たものです:
c - Cmocka テストで出力が表示されない
cmocka サンプル ファイルをダウンロードし、すべての指示に従いました。すべてのテスト ファイルが正常に生成され、実行できますが、コンソールに出力が表示されません。環境変数を変更しよCMOCKA_MESSAGE_OUTPUT
うとし、独自のテストを作成してコンパイルしようとし、cmocka を再コンパイルして再インストールしようとしましたが、テストで何も出力されませんでした。私はWindows 7 32ビットで作業しているので、cygwinも試してみることにしましたが、cygwinはパブリックライブラリを見つけることができないとスローするだけなので、この調査のフォークを放棄しました-結局のところ、cmockaはWindows cmdでも正常に動作するはずです. テストでコンソールに何かを出力する方法を知っている人はいますか?
編集
コンパイル/リンクに問題があった場合に備えて、メイク情報を追加していますが、何も表示されません (エラーは発生せず、tests.exe ファイルが正しく出力されます)。
メイクファイル
注 1: cflags の多数のパスは絶望から解放されています。最初は最初のパスだけを使用していました。
注 2: Netbeans または cygwin でこのスクリプトを実行しようとすると、スラッシュに変更del
しrm -f
て切り替えます。出力は上記のようになります。make はエラーなしでtests.exe
実行され、.
c++ - JUnit形式でCMockaレポートを取得するには?
cmocka を使用して、画面にデフォルトの結果を表示できます。単体テストの結果を JUnit 形式で取得したいと考えています。
CMocka は、env 変数CMOCKA_MESSAGE_OUTPUT
または API を使用して JUnit 形式をサポートします。cmocka_set_message_output(CM_OUTPUT_XML);
しかし、まだxmlファイルは生成されません。JUnit形式で結果を取得するのを手伝ってくれる人はいますか?
c - cmocka との連携方法を教えてください。
UbuntuでEclipseを使用しています。
cmockaをインストールしました:
簡単なテスト プロジェクトをビルドすると、リンカー エラーが発生します。このコードから
次のエラーが表示されます。
したがって、cmocka ライブラリをリンカー パスに追加する必要があるようです。しかし、私は得る
libcmocka.so.0.3.1、libcmocka.so.0、libcmocka.so でも同じ結果が得られます。
明らかに、私は非常に基本的なことを間違っていますが、何ですか?
c - Visual Studio Cリンカーラップオプション?
この記事からC のモック オブジェクトを使用した単体テスト:
これは
--wrap
、ラップされた関数の名前を引数として受け取るリンカー オプションを使用して行われます。テストが gcc を使用してコンパイルされた場合、呼び出しは次のようになります。
$ gcc -g -Wl,--wrap=chef_cook waiter_test.c chef.c
Visual Studio で C プロジェクトをコンパイルするときにこれを行うにはどうすればよいですか?