2011-03-01 80 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支持即將推出。

聲明:我是該擴展的作者之一。

相關問題