如何在MFC应用程序中使用gmock

时间:2014-03-27 05:25:53

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

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

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

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

#include "gmock/gmock.h"

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

但是因为mfc应用程序没有main方法而是InitInstance方法。 我该如何开始运行测试?

1 个答案:

答案 0 :(得分:2)

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

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

(这是有道理的,如果你考虑一下。没有真正的理由你应该在你的最终产品中部署你的单元测试。单元测试是为了开发人员的消费而不是你的客户。)

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

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

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

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

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

关于编辑:为了澄清,这些细节与googletest相对应,但也适用于gmock,因为gmock使用了googletest。