0

我们将 cppunit 单元测试构建为 dll 并将其加载到 TestPlugInRunnerd.exe 以显示我们的结果。我们编写自己的模拟,但我想开始使用模拟框架,例如 gmock。

我下载了 gmock 并链接到它,没有太多问题。我已经使用 gmock 编写了一个模拟,它编译得很好。但后来我在 gmock 常见问题解答中阅读了以下内容:

如果您想使用 Google Test 以外的其他东西(例如 CppUnit 或 CxxTest)作为测试框架,只需将上一节中的 main() 函数更改为:

int main(int argc, char** argv) {
  // 以下行导致 Google Mock 在失败时抛出异常,
  // 这将被您的测试框架解释为测试失败。
  ::testing::GTEST_FLAG(throw_on_failure) = true;
  ::testing::InitGoogleMock(&argc, argv);
  ...无论您的测试框架需要什么...
}

这种方法有一个问题:它使 Google Mock 有时会从模拟对象的析构函数中抛出异常。对于某些编译器,这有时会导致测试程序崩溃。您仍然可以注意到测试失败了,但这不是优雅的失败。

我显然没有主线。我需要做什么才能让 gmock 使用我的 dll?我应该考虑 gmock 的替代品吗?

谢谢,

巴里

4

1 回答 1

1

首先,您不可能没有主服务器。否则你将如何执行你的单元测试?

其次,您可以创建一个调用这两个函数的类的静态变量,如下所示:

struct GmockInitializer
{
  GmockInitializer()
  {
    ::testing::GTEST_FLAG(throw_on_failure) = true;
    ::testing::InitGoogleMock(0,0);  // << not sure about this. might not work
  }
};
GmockInitializer gmockInitializer;
于 2011-03-18T08:58:20.907 回答