2

我正在尝试在 Eclipse 中使用 cmocka 单元测试框架建立一个 C 项目。使用以下软件:

  • 视窗 10
  • gcc 9.2.0
  • cmocka 1.1.0
  • Eclipse 光盘 4.22.0

我在 Eclipse 中创建了一个新的默认 Hello World ANSI C 项目,名为“cmocka_test”。它编译,它是可调试的,并打印到控制台。

然后,我通过执行以下操作扩展项目以包含 cmocka 库:

  1. 我将 cmocka-1.1.0-mingw.zip ( https://cmocka.org/files/1.1/ ) 的内容提取到项目文件夹中
  2. 我将“包含”路径添加到项目Properties -> C/C++ Build -> Settings -> G CC C Compiler -> Includes
  3. 我将“lib”路径添加到项目Properties -> C/C++ Build -> Settings -> MinGW C Linker -> Libraries -> Library search path和“cmocka”到 -> Libraries -> Libraries (-l)
  4. 修改代码以包含一个简单的 cmocka 测试用例:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>

static void null_test_success(void **state) {
    (void) state; /* unused */
    int test = 4;
    assert_int_equal(test, 5);

}
int main(void) {
    printf("Hello");
    const struct CMUnitTest tests[] = {
        cmocka_unit_test(null_test_success),
    };
    return cmocka_run_group_tests(tests, NULL, NULL);
}

它编译得很好,这是控制台输出:

12:30:17 **** Rebuild of configuration Debug for project cmocka_test ****
Info: Internal Builder is used for build
gcc "-IC:\\Users\\UnbescholtenerBuerger\\eclipse-workspace\\cmocka_test\\cmocka\\cmocka-1.1.0\\include" -O0 -g3 -pedantic -Wall -c -fmessage-length=0 -o "src\\cmocka_test.o" "..\\src\\cmocka_test.c" 
gcc "-LC:\\Program Files (x86)\\cmocka\\lib" -o cmocka_test.exe "src\\cmocka_test.o" -lcmocka 

但是,调试/运行无法按预期工作。在 Eclipse 中单击调试符号不会让我进入 main() 函数的开头。它不会停在我设置的断点处。它不会向控制台写入“Hello”,也不会通知失败的测试用例。没有控制台输出,没有问题或警告。我只是立即 <terminated, exit value: 0> gdb (7.6.1) 在调试视图中获得信息。在调试器控制台(我以前从未使用过)中:

[New Thread 18044.0x3020]
[New Thread 18044.0x598]
[New Thread 18044.0x38f0]
Thread ID 0 not known.
Thread ID 0 not known.
Thread ID 0 not known.

我在这里想念什么?


每个用户busybee的请求,这里是makefile中的gcc命令:

gcc -c -Icmocka/cmocka-1.0.0/include -g -o ut_test.o C:/Users/UnbescholtenerBuerger/eclipse-workspace/ut_test/src/ut_test.c
gcc -Lcmocka/cmocka-1.0.0/bin -lcmocka -g -o ut_test ut_test.o

结果是一样的。

4

0 回答 0