其他分享
首页 > 其他分享> > c-关于单元测试(googletest)和项目/文件夹/文件的困惑

c-关于单元测试(googletest)和项目/文件夹/文件的困惑

作者:互联网

这是我第一次要在c项目中使用单元测试.因此,我有许多现有的类,我将为其编写测试(至少其中一些测试).此外,应用程序当然具有main()函数.

我在qmake中使用qt creator,但也可以切换到cmake.该项目,qt创建者和qmake运行良好.

我现在的困惑是如何添加单元测试?我打算使用googletest.我已经在一个新项目中运行了一个测试,测试了一些虚拟的add(int,int)函数,并将所有内容都放在一个文件中(函数,测试和main).它如何与现有项目(具有自己的main())一起工作.我是否需要设置第二个项目并将标头包含在测试文件中?好的文件夹结构是什么?

解决方法:

我认为最好的方法是创建一个模型库(包含所有生产代码),一个程序可执行文件和一个测试可执行文件.然后,您可以将所有生产代码链接到该程序并测试可执行文件.测试文件也存储在测试可执行文件中.我所有的项目都具有以下结构:

model.lib (link against both exe)
program.exe
modelTest.exe

在文件系统上的具体文件夹中,可以存储测试文件和生产文件.构建工具(如cmake)应将文件分开,然后将测试文件放入测试可执行文件中,将生产文件放入模型库中.

考虑以下示例:
我有一个包含以下文件的文件夹:

src (folder)
 - main.cpp
 - model.h
 - model.cpp
 - modelTest.cpp

cmake文件可能如下所示:

cmake_minimum_required(VERSION 2.8)
project(TheUltimateProject)
ADD_EXECUTABLE(program main.cpp)
ADD_library(model shared model.cpp model.h)
ADD_EXECUTABLE(modelTest modelTest.cpp)

target_link_libraries(program model)
target_link_libraries(modelTest model)

如果您使用像Google test这样的测试框架,则还必须将modelTest可执行文件与gmock链接起来,不要忘记添加include文件夹:

例如

link_directories($ENV{GMOCK_HOME}/Debug)
include_directories($ENV{GMOCK_HOME}/googlemock/include) 
include_directories($ENV{GMOCK_HOME}/googletest/include)
target_link_libraries(modelTest gmock_main gmock)

标签:c,unit-testing,qt-creator,ide,googletest
来源: https://codeday.me/bug/20191013/1910044.html