如何使用谷歌测试作为唯一的库

时间:2016-03-23 02:08:16

标签: c++ googletest

我已经厌倦了以下代码。

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文件的库。 你能给我一些指导吗?

1 个答案:

答案 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