0

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

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

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

#include "gmock/gmock.h"

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

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

4

1 回答 1

2

Google 建议您为您的测试创建一个单独的项目 - 一个测试项目 - 它有自己的int main. 他们的常见问题页面参考了以下资源以获取指导:

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

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

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

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

根据过去的经验,需要注意的一些事项:

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

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

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

于 2014-03-27T07:00:11.290 回答