我如何使测试工作
How do I make gtest work
所以我和其他一些人一起得到undefined reference to testing::UnitTest::Run()
。我已经编译了这些库(libgtest.a
和libgtest_main.a
),并将它们放在MinGW的lib文件夹中,但没有找到任何地方。这是我的CMakeList.txt
:
cmake_minimum_required(VERSION 3.2)
project(proj_tests)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
include_directories("E:/Git/proj")
include_directories("D:/Development/Libraries/gtest-1.7.0/include")
find_package(gtest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
add_executable(proj_tests ${SOURCE_FILES} containers/proj_test.h)
target_link_libraries(proj_tests ${GTEST_LIBRARIES} pthread)
我已经在gtest样本上做了make
,并且能够运行它而没有任何问题。
我在Windows 7上使用CLion进行这个项目。我怎样才能使这个谷歌测试框架的东西正常工作?
当您构建gtest时,您应该有以下三个文件:
- include_fused/gt gtest.h
- include_fused/gt gtest-all.cc
- include_fused/gt gtest_main.cc
如果您提供自己的main,则只需要前两个。如果要使用gtest main,还需要第三个。建议将它们添加到正在构建的每个单元测试项目中。
因此,在经历了很多痛苦之后,我切换到Linux,并通过下载和编译libgtest-dev
并使用Erik Smistad的博客中的配置来尝试它。它在CLion项目中工作,没有问题,这意味着我的Windows编译的Google测试库发生了一些奇怪的事情。
对于windows/MinGW:这是我对windows的解决方案…
- 我从Richard Pattis的UCI网页上得到了预编译的库,关于如何让google测试框架在eclipse上工作。
-
include
中的gtest
文件夹被复制到mingw32include
文件夹, - 将
make
文件夹中的gtest_main.a
和libgtest.a
文件拷贝到mingw32lib
文件夹中。
对我来说,最终的CMake配置是这样的:
cmake_minimum_required(VERSION 3.2)
project(eadlib_tests)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
#path to project to test
include_directories("E:/Git/eadlib")
#Google test framework stuff
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
add_executable(eadlib_tests ${SOURCE_FILES} containers/eadlib_test.h)
target_link_libraries(eadlib_tests ${GTEST_LIBRARIES} pthread)
像这样(这是我的一个库项目的片段)
find_package(GTest REQUIRED)
target_link_libraries(cpputil_test cpputil ${CMAKE_THREAD_LIBS_INIT} ${GTEST_BOTH_LIBRARIES} ${Boost_LIBRARIES} )
add_test(NAME cpputil_test COMMAND cpputil_test)
当然,在我的例子中,这个项目叫做cpputil_test。你需要把它替换成你自己的。
还要注意CMAKE_THREAD_LIBS_INIT
的使用,它允许您的代码在所有主机系统之间可移植。在linux上构建时,它隐藏了对pthreads
的依赖(例如,OSX, iOS和Windows没有此依赖)。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- QSqlquery prepare()和bindvalue()不工作
- GoogleTest 中的参数化测试无法按预期工作
- C++编译器 g++.exe 无法编译简单的测试程序 - 确定 CXX 编译器是否工作失败
- Mongodb Cxx 驱动程序测试在发布版本中崩溃 [ 在调试中工作正常]
- 如何使用 cmake 在C++中快速检查(基于属性的测试)工作?
- 功能测试宏在 Visual C++ 中无法正常工作
- 素测试算法无法正常工作
- 可视化C++工作区和编译器.你好世界测试初学者
- C++测试lambda是否正常工作
- 用于测试字节序兼容性的工作流
- 如果运算符<对浮点类型正常工作,为什么我们不能将其用于相等性测试?
- 有什么方法可以让谷歌测试框架与Visual Studio 6协同工作吗
- 函数拒绝在升压测试函数中工作
- Regex可以在Regex测试器上工作,但不能在c++中工作
- 我如何使测试工作
- 解析字符串:我的代码在测试后显然可以工作,但不雅
- 哪个C++IDE支持快速TDD工作流程和Google或Boost测试框架
- C++ 昨天分段错误测试的代码工作完美,现在它出错了
- 工作与现有的c++代码测试下的谷歌测试和添加Qt