如何 运行 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
我正在使用 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