2017-03-02 365 views
0

我正在用谷歌單元測試在C++中製作單元測試系統。而且我注意到,我所有的單元測試都包含相同的行,並且所有的眼淚都包含其他行,相當於所有行。谷歌單元測試默認設置

我想知道是否有任何方法可以在實際設置任何單元測試之前默認創建一個設置。

#include <gtest.h> 
class TestExample : ::testing::Test 
{ 
    public: 
     virtual void SetUp() 
     { 
      //same line for all tests of my system 
      my_system::clean_system(); 

      //code of specific setup 
      //... 
     } 
     virtual void TearDown() 
     { 
      //Code of specific teardown 
      //... 

      my_system::clean_system(); 
     } 
}; 

回答

1

您可以創建一個包裝類,即TestWrapper,您在其中定義默認SetUp()並打電話到CustomSetUp()

#include <gtest.h> 

class TestWrapper: public ::testing::Test 
{ 
    public: 
     virtual void CustomSetUp() {} 
     virtual void SetUp() 
     { 
      //same line for all tests of my system 
      my_system::clean_system(); 

      CustomSetUp(); //code of specific setup 
     } 
}; 

然後在你的單元測試使用TestWrapper類,而不是::testing::Test和超載CustomSetUp()代替SetUp()

class TestExample : public TestWrapper 
{ 
    public: 
     virtual void CustomSetUp() 
     { 
      //code of specific setup 
      //... 
     } 
     virtual void TearDown() 
     { 
      //Code of specific teardown 
      //... 

      my_system::clean_system(); 
     } 
}; 
+0

是的,我這麼認爲這樣的方法,但我問了這個問題,知道是否存在谷歌測試中的一些方法,設置一個指針函數調用之前設置或類似的東西,不要離開程序員跳過這一步。但是,無論如何,謝謝你,我會做包裝。^^ – Check