2

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

編集

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

メイクファイル

OBJ_DIR = obj
HDR = $(wildcard *.h)
SRC = $(HDR:.h=.c)
OBJ = $(HDR:%.h=$(OBJ_DIR)\\%.o)
CC = gcc
CFLAGS = -I"C:\Program Files\cmocka\include" -I"C:\Program Files\cmocka\lib" -I"C:\Program Files\cmocka\bin" -llibcmocka -lcmocka

.PHONY: all clean

all: tests.exe

$(OBJ_DIR)\\%.o: %.c %.h
    $(CC) $< -c -o $@ $(CFLAGS)

$(OBJ_DIR)\tests.o: tests.c
    $(CC) $< -c -o $@ $(CFLAGS)

tests.exe: $(OBJ) $(OBJ_DIR)\tests.o
    $(CC) $^ -o tests.exe $(CFLAGS)

clean:
    del $(OBJ) $(OBJ_DIR)\tests.o tests.exe

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

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

4

5 に答える 5

1

この古いスレッドを掘り下げて申し訳ありませんが、最近、まったく同じ問題に遭遇しました。meson/ninja を使用して自分ですべてをコンパイルしましたが、テスト自体からも単純な printf からも出力が得られませんでした。

hereのプリコンパイル済みライブラリを使用して問題を解決しました。MSYS2 をインストール/起動して、64 ビット MINGW を使用するだけです。

pacman -S mingw-w64-x86_64-cmocka

32 ビット MINGW の場合:

pacman -S mingw-w64-i686-cmocka

次に、hello world テストを再コンパイルしたところ、出力は意図したとおりに機能しました。

于 2020-09-10T07:08:01.703 に答える
0

私は同じ問題を抱えていました。私にとっては、state引数をテストに適切に渡していなかったことが原因でした。私のテストにはこの署名がありました:

void test_something() { /* ...snip... */ }

しかし、そうすべきだった

void test_something(void **state) {
    (void) state;  /* unused */
    /* ...snip... */
}

これを修正した後、出力が正しく表示されました。

于 2021-10-22T19:27:00.867 に答える