c - 对 `UNITY_BEGIN' 和 'UNITY_END' 的 undefined reference

标签 c unit-testing gcc makefile linker

我想使用Unity对我的 C 代码进行单元测试,但编译时出现以下错误:

$ make
gcc  ../Unity/src/unity.o src/helpers.o src/chess.o src/search.o test/TestCheck.o src/main.o -o checkai
src/main.o: In function `main':
main.c:(.text+0x4b): undefined reference to `UNITY_BEGIN'
main.c:(.text+0x55): undefined reference to `UNITY_END'
collect2: error: ld returned 1 exit status
make: *** [Makefile:11: checkai] Error 1
$ make -n
gcc  ../Unity/src/unity.o src/helpers.o src/chess.o src/search.o test/TestCheck.o src/main.o -o checkai

我的主要功能如下所示:

#include <stdio.h>
#include <stdlib.h>

#include "helpers.h"
#include "chess.h"

#include "../../Unity/src/unity.h"
//#include "../test/TestCheck.h"

void test_Smoke(void) {
    TEST_ASSERT_EQUAL_INT(1, 2);
}

int main() {
    version();

    chesspiece chessboard[8][8];
    initField(chessboard);

    UNITY_BEGIN();
    RUN_TEST(test_Smoke, 1);
    return UNITY_END();
}

我的链接是否有误?我已经尝试更改 gcc 命令的顺序,但还没有任何帮助。 当我注释掉 UNITY_BEGINUNITY_END 时,我可以编译它并且烟雾测试运行没有问题。

最佳答案

我可以通过不使用发行版 2.1.0 来解决这个问题。 为了解决这个问题,我克隆了当前的主分支,它甚至可以与 UNITY_BEGINUNITY_END 一起使用:

git clone https://github.com/ThrowTheSwitch/Unity.git

关于c - 对 `UNITY_BEGIN' 和 'UNITY_END' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38995065/

相关文章:

c - 为什么这段代码在结果中生成全 1 而不是 0 和 1 的混合?

c - 类型转换为 char 后打印单个字节

c++ - 超声波传感器HC-SR04 + Arduino计算?

javascript - 如何模拟异步函数的返回值?

C 基本内存管理实现

c++ - ms-extensions 标志对 gcc 有什么作用?

c - 并内并和 splinter 矩阵加法

ios - 如何使用OCMock 3检查单元测试中函数的返回值

c - 如何修复段错误?

Android单元测试没有被 mock