c++ - 如何在 MFC 应用程序中使用 gmock

标签 c++ unit-testing mfc googletest googlemock

我有一个非托管的 mfc 应用程序。我想使用 gmock 集成一些单元测试。我添加了所有包含、库。

但是我怎样才能开始运行测试呢?

我知道他们在其他情况下使用 main 方法运行测试。

#include "gmock/gmock.h"

int main(int argc, char** argv) {
    testing::InitGoogleMock(&argc, argv);
    return RUN_ALL_TESTS();
}

但由于 mfc 应用程序没有 main 方法,只有 InitInstance 方法。 如何开始运行测试?

最佳答案

Google 建议您为测试创建一个单独的项目 - test 项目 - 它有自己的 int main。他们的FAQs page引用以下资源以获取指导:

http://hassanjamilahmad.blogspot.com/2009/07/gtest-starters-help.html

(如果您考虑一下,这是有道理的。没有真正的理由应该在最终产品中部署单元测试。单元测试旨在供开发人员使用;而不是您的客户。)

简而言之,这是一般设置:

  • 创建一个空的 C++ 项目并将其配置为构建一个 .exe
  • 在此项目中定义一个int main,并添加您提到的googletest样板代码
  • 指定测试项目依赖于您的主要项目的输出(在链接器属性中)
  • 向该项目添加一个构建后事件,调用它自己的输出,从而自动运行测试

一些需要警惕的事情,根据过去的经验:

  • 此设置需要导出 MFC 项目中的类/函数,以便测试项目使用(否则无法访问它们)

  • 我们在将 MFC 项目链接(即通过链接器)到测试项目时遇到了一些问题。我们最终将 MFC 项目中的代码提取到单独的库中,并使用 googletest 来测试这些库。 (这些更容易配置,并且有助于代码组织作为奖励。)

关于编辑:澄清一下,这些细节对应于 googletest,但也适用于 gmock,因为 gmock 在后台使用 googletest。

关于c++ - 如何在 MFC 应用程序中使用 gmock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22678975/

相关文章:

node.js - 如何在strapi框架内实现单元测试

windows - 哪种字体是 MFC 对话框控件的默认字体?

c++ - 为什么模板只能在头文件中实现?

c++ - 生成库的多个实例的 Makefile

visual-studio-2010 - 如何在VS单元测试中包含样本数据文件?

c++ - 从 MFC 应用程序连接到 SQL Server Compact Edition (.sdf)

c++ - 当显示为独立对话框时,CPropertyPage 派生对话框不会在 Esc 上关闭

c++ - 将数组中的元素移动 N 个元素

c++ - 如何让模板类型名类的两个(或更多)实例使用相同的函数

python - 数独求解器中未定义全局名称 checkRows