相关疑难解决方法(0)

如何在Visual Studio 2005上设置Google C++测试框架(gtest)

它没有记录在网站上,人们似乎在设置框架时遇到了问题.有人可以逐步介绍示例项目设置.

c++ unit-testing visual-studio-2005 googletest visual-studio

81
推荐指数
5
解决办法
6万
查看次数

CMake + GoogleTest

我刚刚下载了googletest,用CMake生成了它的makefile并构建了它.现在,我需要在我的测试项目中使用它.

有了CMake,我被告知不要直接指向gtest库(使用include _directorieslink_directories),而是使用find_package().

问题是,生成的gtest makefile没有安装目标.我无法理解find_package(GTest REQUIRED)如果没有某种安装可以工作.此外,将gtest文件夹作为子文件夹放在我的项目中是不可能的.

谢谢你的帮助.

cmake googletest

47
推荐指数
5
解决办法
3万
查看次数

使用CMake的Google C++ Testing Framework的最简单示例

我有一个非常简单的C++库(一个头文件,一个.cpp文件).我想使用Google C++测试框架为这个项目编写单元测试.

这是目录结构:

~/project1
 |
 |-- project1.cpp
 |-- project1.h
 |-- project1_unittests.cpp
 \-- CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

我不打算编写自己的main()函数.我想与引物中提到的gtest_main链接.CMakeLists.txt应该包含什么?

c++ unit-testing cmake googletest

25
推荐指数
1
解决办法
1万
查看次数

Gtest:未定义的参考文献

我正在尝试使用GoogleTest来测试一个简单的函数,但是当我make在build文件夹中运行时,编译器会Undefined Reference向我抛出错误消息.我引用了gtest头文件,所以我不确定是什么问题.有任何想法吗?我是unix和单元测试的全部主题的新手,所以我很可能会遗漏一些简单的东西.提前致谢!

错误消息:

CMakeFiles/Proj2.dir/main.cpp.o: In function `main':
main.cpp:(.text+0x1e): undefined reference to `testing::InitGoogleTest(int*, char**)'
main.cpp:(.text+0x23): undefined reference to `testing::UnitTest::GetInstance()'
main.cpp:(.text+0x2b): undefined reference to `testing::UnitTest::Run()'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include "gtest/gtest.h"

int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)

TEST.CPP

#include "gtest/gtest.h"
#include "Testable.h"

TEST(GetTwoTest, Two) {
    EXPECT_EQ(2, GetTwo());
}
Run Code Online (Sandbox Code Playgroud)

Testable.cpp

#include "Testable.h"

int GetTwo() {
    return 3;
}
Run Code Online (Sandbox Code Playgroud)

这是我的CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.6)

SET(CMAKE_CXX_FLAGS "-std=gnu++11") #Turn on C++11 Support

set(FILES_TO_TEST Testable.cpp)
set(UNIT_TESTS …
Run Code Online (Sandbox Code Playgroud)

c++ unix unit-testing cmake googletest

17
推荐指数
1
解决办法
3万
查看次数

对gtest中的testing :: internal :: EqFailure的未定义引用

我正在尝试使用GoogleTest对函数进行测试,现在它不再找到了这个EqFailure 东西:

/usr/include/gtest/gtest.h:1337: undefined reference to `testing::internal::EqFailure(char const*, char const*, testing::internal::String const&, testing::internal::String const&, bool)'
Run Code Online (Sandbox Code Playgroud)

我正在写这样的测试:

test_file.cpp:

#include <gtest/gtest.h>

#include "tools/CMorphology.hpp"

TEST(erode_Morph, crossKernel_Morph)
{
  // initialize matrix to be eroded
  cv::Mat matrix = (cv::Mat_<uchar>(5, 5) << 1, 1, 1, 1, 1,
                                             1, 1, 0, 1, 1,
                                             1, 1, 1, 1, 1,
                                             1, 0, 1, 1, 1,
                                             1, 1, 1, 1, 1
            );
  // initialize the cross kernel
  cv::Mat kernel = cv::getStructuringElement(cv::MORPH_CROSS, cv::Size(3, 3));
  // initialize the vector …
Run Code Online (Sandbox Code Playgroud)

c++ opencv googletest

8
推荐指数
4
解决办法
2万
查看次数

CMake:添加 GTest 进行构建

我正在尝试使用该FetchContent模块将 googletest 添加到我的构建中,但我遇到了许多部分答案,并且无法到达我想要的位置。使用该模块的过时示例似乎过多ExternalProject,但使用该模块的有用示例却很少FetchContent

这是我今天浏览过的不完整的参考文献列表:

这是我要使用的文件结构:

-root
    -build
        -googletest-build
        -googletest-src
        -googletest-test
        -src
        -test
    -src
        -CMakeLists.txt
        -AllOfMySourceFiles
    -test
        -CMakeLists.txt
        -testgtest.cpp
    -CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

这些是我尝试用来构建的命令:

cmake ..
cmake --build .
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能够将所有源文件链接到我想要的 dll 中,并且我相当有信心知道如何将它与我想要使用的测试 exe 链接。我遇到的主要问题是使用该FetchContent模块构建testgtest.cpp可执行文件并将其与 googletest 链接。它一直无法构建,而且失败的具体原因根本不明显。

根/CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
set(CMAKE_CXX_FLAGS_RELEASE "/MT")
set(CMAKE_CXX_FLAGS_DEBUG "/MTd")
set(CMAKE_CXX_STANDARD 11)

set(LIBNAME "WTP")
set(TESTNAME "TestRunner")

set(LIB_MAJOR_VERS "0")
set(LIB_MINOR_VERS "0")
set(LIB_PATCH_VERS "0")

#build source
project(${LIBNAME} 
    VERSION  ${LIB_MAJOR_VERS}.${LIB_MINOR_VERS}.${LIB_PATCH_VERS})
add_subdirectory(src)

#build tests
project(${TESTNAME})

add_subdirectory(test)
enable_testing() …
Run Code Online (Sandbox Code Playgroud)

c++ cmake googletest

6
推荐指数
1
解决办法
1万
查看次数

CMake 单元测试 - 未解析的外部符号

我对 C++ 和 CMake 比较陌生。我正在尝试创建一个库,但在尝试运行单元测试时出现错误。从我的研究中,我已经收集了“未解析的外部符号”错误的含义,但我无法弄清楚如何修复它。

这是我的项目结构:

lib
  glfw - GLFW source folder
src
  ogl-renderer.cpp
  ogl-renderer.h
  CMakeLists.txt
  ...additional source files
test
  ogl-test.cpp
  ogl-test.h
  CMakeLists.txt
CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt:

cmake_minimum_required (VERSION 3.8)

project("ogl-renderer")

set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)

add_subdirectory ("lib/glfw-3.3.2")

add_subdirectory ("src")
add_subdirectory ("test")

enable_testing()

add_test (ogl-renderer olg-test)
Run Code Online (Sandbox Code Playgroud)

源代码/CMakeLists.txt:

cmake_minimum_required (VERSION 3.8)

add_library (ogl-renderer "engine/renderer.cpp" "engine/renderer.h" "engine/renderer.cpp" "engine/renderer.h" "engine/Window.cpp" "engine/Window.h" "engine/Shape.cpp" "engine/Shape.h" "engine/message-queue.cpp" "engine/message-queue.h" "engine/messages/window-mgmt.h" "engine/messages/window-mgmt.cpp")

target_link_libraries(ogl-renderer glfw)
Run Code Online (Sandbox Code Playgroud)

测试/CMakeLists.txt:

add_executable (ogl-test …
Run Code Online (Sandbox Code Playgroud)

c++ cmake

5
推荐指数
1
解决办法
500
查看次数

Google Test 单独项目 - 如何针对 C++ 项目运行测试

我想弄清楚如何使用 CMake 对我的 C++ 项目运行 Google 测试。到目前为止,我已经创建了一个名为 Simple 的项目和一个名为 SimpleTest 的 Google Test 项目。

对于简单项目

这是我的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 2.8.4)
project(Simple)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES
    main.cpp
    NewCppClass.cpp
    NewCppClass.h)

add_executable(Simple ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)

这是我的 main.cpp 文件:

#include <iostream>

#include "NewCppClass.h"

using namespace std;

int main() {
    NewCppClass newCppClass;
    int i = newCppClass.getNumberToTest();
    cout << "i = " << i;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的类标题:

#ifndef SIMPLE_NEWCPPCLASS_H
#define SIMPLE_NEWCPPCLASS_H

class NewCppClass {
    public:
        int getNumberToTest();

};

#endif //SIMPLE_NEWCPPCLASS_H
Run Code Online (Sandbox Code Playgroud)

这是我的 .cpp 文件:

#include "NewCppClass.h"

int NewCppClass::getNumberToTest() …
Run Code Online (Sandbox Code Playgroud)

c++ cmake googletest clion

3
推荐指数
1
解决办法
3297
查看次数