我已经厌倦了以下代码。
test.c的:
#include <stdio.h>
#include <gtest/gtest.h>
int main(void)
{
ASSERT_EQ(18, 1);
return 0;
}
CMakeList.txt:
cmake_minimum_required(VERSION 2.6)
#Locate GTest
find_package(GTest REQUIRED)
add_executable(test test.c)
add_executable(runTests test.cpp)
target_link_libraries(runTests ${GTEST_LIBRARIES} pthread)
target_link_libraries(test ${GTEST_LIBRARIES} pthread)
结果:
/usr/include/gtest/gtest.h:54:18: fatal error: limits: No such file or directory
Also, even if I includes limits.h in CMakeList.txt, new errors comes to me.
file included from /usr/include/gtest/internal/gtest-port.h:188:0,
from /usr/include/gtest/internal/gtest-internal.h:40,
/usr/include/stdlib.h:140:8: error: ?size_t? does not name a type
...
这种方式在我看来并不合适。
似乎不可能将gtest用作具有通用c文件的库。 你能给我一些指导吗?
答案 0 :(得分:2)
您无法在任何地方使用ASSERT_*
宏,但只能在TEST()
或TEST_F()
宏中使用。并且您必须使用测试运行器运行测试,而您在test.c
中没有这样做。
Google Test是一个C ++库,因此您无法将其链接到C程序中,这并不意味着您无法使用C ++测试C代码。为此,您必须创建一个C ++程序,链接Google Test和作为SUT的C库(被测系统)。
要使用Google Test设置第一个测试项目,我建议您阅读primer section in the docs。