2

我已经下载了cmocka 示例文件并按照所有说明进行操作。所有测试文件均已成功生成,我可以运行它们,但控制台中没有输出。我尝试改变CMOCKA_MESSAGE_OUTPUT环境变量,尝试编写自己的测试并编译它们,尝试重新编译并重新安装 cmocka 几次 - 没有任何东西使测试输出任何东西。我在 Windows 7 32 位上工作,所以我想尝试一下 cygwin,但 cygwin 只是抛出它找不到公共库,所以我放弃了我的研究的这个分支——毕竟 cmocka 也应该在 windows cmd 中正常工作。有谁知道如何让测试输出任何东西到控制台?

编辑

我正在添加我的 make 信息以防编译/链接出现问题,尽管我没有看到任何问题(它不会产生任何错误并正确输出 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

该符号未导出,请参阅https://git.cryptomilk.org/projects/cmocka.git/commit/?id=7364469189558a8720b60880940a41e1a0d20452

于 2015-07-07T09:09:06.773 回答
1

很抱歉挖掘了这个旧线程,但我最近偶然发现了完全相同的问题。我自己用 meson/ninja 编译了所有东西,既没有从测试本身得到任何输出,也没有从简单的 printf 得到任何输出。

我通过使用这里的预编译库解决了这个问题。只需安装/启动 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

您的问题出在具有单元测试的 tests.c 中,而不是您的设置中。向我们展示您编写单元测试的 tests.c 文件。

于 2017-03-16T12:21:54.223 回答
0

我有同样的问题,对我来说,我没有正确地将state论点传递给测试。我的测试有这个签名:

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

但它应该是

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

修复此问题后,输出正确显示。

于 2021-10-22T19:27:00.867 回答
0

我曾经也有过一样的问题。特别是我还使用 gcov 来查看覆盖范围,它声称没有执行任何操作。

我的解决方案是我只是忘记将 cmocka 添加到我的环境路径中。将“cmocka.dll”添加到路径后,一切终于正常了。

于 2021-03-22T08:18:59.847 回答