我有一个非常简单的 C++ 库(一个头文件,一个 .cpp 文件)。我想使用 Google C++ 测试框架为这个项目编写单元测试。
这是目录结构:
~/project1
|
|-- project1.cpp
|-- project1.h
|-- project1_unittests.cpp
\-- CMakeLists.txt
我不打算编写自己的 main() 函数。我想与入门中提到的 gtest_main链接。CMakeLists.txt 应该包含什么?
我有一个非常简单的 C++ 库(一个头文件,一个 .cpp 文件)。我想使用 Google C++ 测试框架为这个项目编写单元测试。
这是目录结构:
~/project1
|
|-- project1.cpp
|-- project1.h
|-- project1_unittests.cpp
\-- CMakeLists.txt
我不打算编写自己的 main() 函数。我想与入门中提到的 gtest_main链接。CMakeLists.txt 应该包含什么?
启用 CMake 的内置测试子系统:
# For make-based builds, defines make target named test.
# For Visual Studio builds, defines Visual Studio project named RUN_TESTS.
enable_testing()
编译一个可执行单元测试并将其与 gtest 和 gtest_main 链接:
add_executable(runUnitTests
project1_unittests.cpp
)
target_link_libraries(runUnitTests gtest gtest_main)
添加运行此可执行文件的测试:
add_test(
NAME runUnitTests
COMMAND runUnitTests
)
这里有一个最简单的,
1.创建一个简单的源文件,
$ cat simplegtest.cpp
#include<gtest/gtest.h>
TEST(Mytest, failing_test){
EXPECT_TRUE(false);
}
2.使用下面的命令编译它,
$ LDLIBS="-lgtest_main -lgtest" make simplegtest
g++ simplegtest.cpp -lgtest_main -lgtest -o simplegtest
3.使用以下命令执行测试可执行文件,
$ ./simplegtest
Running main() from /home/prashant/work/thirdparty/googletest-release-1.8.1/googletest/src/gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from Mytest
[ RUN ] Mytest.failing_test
simplegtest.cpp:4: Failure
Value of: false
Actual: false
Expected: true
[ FAILED ] Mytest.failing_test (0 ms)
[----------] 1 test from Mytest (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (1 ms total)
[ PASSED ] 0 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] Mytest.failing_test
1 FAILED TEST