Visual studio 在VisualStudio中查看Google测试结果

Visual studio 在VisualStudio中查看Google测试结果,visual-studio,googletest,Visual Studio,Googletest,有没有办法在VisualStudio中查看Google测试结果?如果是,如何进行? 我正在使用谷歌测试1.5.0和VisualStudio2010 到目前为止,我一直在从命令行使用GoogleTest。 我在其他IDE eclipse上见过这样的集成。。。但在VS中还没有,您可以使用后期生成事件。以下是指南: 您还可以在VisualStudio的“工具”菜单中配置外部工具,并使用它运行项目的目标路径。提示:创建一个工具栏菜单项,使其更易于调用查看-我想这正是您想要的。 引用CodePlex描述

有没有办法在VisualStudio中查看Google测试结果?如果是,如何进行? 我正在使用谷歌测试1.5.0和VisualStudio2010

到目前为止,我一直在从命令行使用GoogleTest。
我在其他IDE eclipse上见过这样的集成。。。但在VS中还没有,您可以使用后期生成事件。以下是指南:

您还可以在VisualStudio的“工具”菜单中配置外部工具,并使用它运行项目的目标路径。提示:创建一个工具栏菜单项,使其更易于调用查看-我想这正是您想要的。 引用CodePlex描述:

GoogleTestAddin是VisualStudio2008和2010的附加组件

通过选择googletest函数,可以更轻松地执行/调试googletest函数

您不再需要设置测试应用程序的命令参数来仅执行指定的函数或测试

googletest输出被重定向到Visual Studio输出窗口。 在失败的测试中,您可以通过双击错误消息轻松跳转到代码


有一种非常简单的方法可以在单元测试中使用googletest输出的并行测试

简单地说,您可以创建自己的Printer类,将结果直接输出到VisualStudio的输出窗口。这种方式似乎比其他方式更灵活,因为您可以控制结果的内容格式、细节等以及目的地。您可以在主功能中正确地执行此操作。一次可以使用多台打印机。您可以通过双击失败测试的错误消息跳转到代码

以下是执行此操作的步骤:

创建派生自::testing::EmptyTestEventListener的类 班 覆盖必要的功能。使用OutputDebugString 函数而不是printf。 在运行所有测试调用之前,创建类的实例并将其链接到gtest的侦听器列表。 您的打印机类可能如下所示:

// Provides alternative output mode which produces minimal amount of
// information about tests.
class TersePrinter : public EmptyTestEventListener {
  void outDebugStringA (const char *format, ...)
  {
        va_list args;
        va_start( args, format );
        int len = _vscprintf( format, args ) + 1;
        char *str = new char[len * sizeof(char)];
        vsprintf(str, format, args );
        OutputDebugStringA(str);
        delete [] str;
  }

  // Called after all test activities have ended.
  virtual void OnTestProgramEnd(const UnitTest& unit_test) {
    outDebugStringA("TEST %s\n", unit_test.Passed() ? "PASSED" : "FAILED");
  }

  // Called before a test starts.
  virtual void OnTestStart(const TestInfo& test_info) {
    outDebugStringA(
            "*** Test %s.%s starting.\n",
            test_info.test_case_name(),
            test_info.name());
  }

  // Called after a failed assertion or a SUCCEED() invocation.
  virtual void OnTestPartResult(const TestPartResult& test_part_result) {
    outDebugStringA(
            "%s in %s:%d\n%s\n",
            test_part_result.failed() ? "*** Failure" : "Success",
            test_part_result.file_name(),
            test_part_result.line_number(),
            test_part_result.summary());
  }

  // Called after a test ends.
  virtual void OnTestEnd(const TestInfo& test_info) {
    outDebugStringA(
            "*** Test %s.%s ending.\n",
            test_info.test_case_name(),
            test_info.name());
  }
};  // class TersePrinter
将打印机链接到侦听器列表:

UnitTest& unit_test = *UnitTest::GetInstance();
TestEventListeners& listeners = unit_test.listeners();
listeners.Append(new TersePrinter);

Visual Studio 2012的from.

中描述了该方法。还有一个扩展,为Visual Studio中的Google测试提供了测试适配器,从而与Visual Studio测试资源管理器集成:

用于Visual Studio 2013,of甚至推荐它作为更好的替代方案。

使用提供的功能丰富的Google测试适配器,或通过VS的扩展菜单。它目前支持VS2013和VS2015,VS2012支持即将推出


免责声明:我是该扩展的作者之一。

关于构建后事件路线的注意事项:测试失败将导致构建失败。当我将测试拉入持续集成服务器Jenkins时,这给我带来了问题,因为Jenkins会报告失败的构建,而不是失败的测试。