【问题标题】:How to use gmock with MFC application如何在 MFC 应用程序中使用 gmock
【发布时间】:2014-03-27 15:06:32
【问题描述】:

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

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

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

#include "gmock/gmock.h"

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

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

【问题讨论】:

    标签: c++ unit-testing mfc googletest gmock


    【解决方案1】:

    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。

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多