2011-03-01 38 views
11

有没有办法在Visual Studio中查看Google测试结果?如果是,如何?
我使用Google测试1.5.0和Visual Studio 2010在Visual Studio中查看Google测试结果

直到现在我一直在使用谷歌测试从命令行。
我在其他IDE上看到了这样的集成(eclipse ...),但还没有在VS中使用

回答

6

看看GoogleTestAddin - 我认为这是你想要的。
从CodePlex上介绍报价:

GoogleTestAddin是一种附加在Visual Studio 2008和2010年

这使得它更容易被选择它们执行/调试googletest功能。

您将不再需要将测试应用程序的命令参数设置为仅执行指定的功能或测试。

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

4

您可以使用生成后事件。这里是一个指南:
http://leefw.wordpress.com/2010/11/17/google-test-gtest-setup-with-microsoft-visual-studio-2008-c/

您还可以配置在Visual Studio中的工具菜单中的“外部工具”,并用它来运行项目的目标路径。 (提示:创建一个工具栏菜单项,以便于调用)

+0

关于进行构建后事件路由的注意事项:失败的测试将导致构建失败。当我将测试拉入持续集成服务器(Jenkins)时,这导致了我的问题,因为Jenkins会报告失败的构建而不是失败的测试。 – 2014-06-17 16:26:47

6

有一个非常简单的方法来为单元测试使用并行的googletest输出。

简而言之,您可以创建自己的Printer类,它将结果直接输出到VisualStudio的输出窗口。这种方式似乎比其他方式更灵活,因为您可以控制结果的内容(格式,细节等)和目的地。你可以在你的main()函数中做到这一点。您可以一次使用多台打印机。通过在失败的测试中双击错误消息,您可以跳转到代码。

这些步骤做:

  1. 创建一个从::testing::EmptyTestEventListener 类派生的类。
  2. 覆盖必要的功能。使用OutputDebugString() 函数而不是printf()
  3. 在调用RUN_ALL_TESTS()之前,创建一个类的实例并将其链接到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); 

该方法是在sample #9the Googletest samples描述。

4

对于Visual Studio 2012也有提供在Visual Studio中的谷歌测试的测试适配器(因而与视觉工作室测试资源管理器集成)的扩展:为Visual Studio 2013 Google Test Adapter

1

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

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

相关问题