c-Cmocka测试没有显示任何输出



我已经下载了cmocka示例文件,并遵循了所有说明。所有测试文件都已成功生成,我可以运行它们,但控制台中没有显示任何输出。我尝试过更改CMOCKA_MESSAGE_OUTPUT环境变量,尝试过编写自己的测试并编译它们,尝试过多次重新编译和重新安装cmocka——没有什么能让测试输出任何东西。我在Windows 7 32位上工作,所以我想也尝试cygwin,但cygwin只是说它找不到公共库,所以我放弃了我的研究分支——毕竟cmocka也应该在Windows cmd中正常工作。有人知道如何让测试输出到控制台吗?

编辑

我正在添加我的make信息,以防编译/链接出现问题,尽管我没有看到任何问题(它不会产生任何错误,并正确输出tests.exe文件(:

# Makefile
OBJ_DIR = obj
HDR = $(wildcard *.h)
SRC = $(HDR:.h=.c)
OBJ = $(HDR:%.h=$(OBJ_DIR)\%.o)
CC = gcc
CFLAGS = -I"C:Program Filescmockainclude" -I"C:Program Filescmockalib" -I"C:Program Filescmockabin" -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中运行此脚本时,我将del更改为rm -f并切换斜杠。输出如上所述:make在没有任何错误的情况下完成,并输出tests.exe,但一旦执行,它就会抛出无法找到公共库的错误。

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

很抱歉挖掘出这个旧线程,但我最近遇到了完全相同的问题。我自己用介子/忍者编译了所有内容,无论是测试本身还是简单的printf都没有得到任何输出。

我从这里使用预编译库解决了这个问题。只需安装/启动MSYS2并使用对于64位MINGW:

pacman -S mingw-w64-x86_64-cmocka

对于32位MINGW:

pacman -S mingw-w64-i686-cmocka

然后,我重新编译了helloworld测试,输出按预期工作。

我也遇到了同样的问题,对我来说,这是因为我没有正确地将state参数传递给测试。我的测试有这样的签名:

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

但应该是

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

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

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

我也遇到过同样的问题。特别是我还用gcov看了报道,它声称什么都不会被执行。

我的解决方案是,我只是忘记了将cmocka添加到我的环境路径中。在添加";cmocka.dll";通往一切最终成功的道路。

相关内容

  • 没有找到相关文章

最新更新