如何 运行 Google 从终端测试 C 代码?

How To Run Google test from terminal on C code?

我正在使用 googleTest 测试 C 代码。 我的 test.cpp 文件看起来像这样

#include <gtest/gtest.h>
 

extern "C" {
#include "list.h"
#include "list.c"
}

TEST(ListTest, singleInsertion) {
// some tests
}

int main(int argc, char **argv) {
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

但是尝试 运行 从终端使用的测试 g++ test.cpp -lgtest 给出错误和警告,就好像被测试的代码是 C++ 而不是 C。

错误和警告示例: error: invalid conversion for mallocs warning: ISO C++ forbids converting a string constant to ‘char*'

如何声明我测试的文件是 C 而不是 C++?

However trying to run the test from the terminal using g++ test.cpp -lgtest gives Errors and warning as if the code being tested is C++ not C.

那是因为您使用 g++ 编译器将其编译为 C++。使用 gcc 编译为 C.

不幸的是,此代码不会编译为 C - 它会在 google::InitGoogleTest() 调用时阻塞,因为 C 无法识别 :: 作用域运算符。我不熟悉这个测试框架,但乍一看它似乎是用于 C++,而不是 C。

解决这个问题的方法是删除 #include "list.c" 指令

extern "C" {
#include "list.h"
}

单独编译为C:

gcc -c list.c

然后编译你的测试器:

g++ -c test.cpp

然后 link 包含库的目标文件:

g++ -o test test.o list.o -lgtest