2014-03-06 65 views
1

我想在googleTest中循環測試用例。我這裏所說的測試用例是這樣的事情:在googletest中循環測試用例

TEST_F(AppsTests, test_wkf1) 
{ 
    //... 
} 

如果TEST_F內i循環,它崩潰。所以我會在測試案例的循環,如

foreach(QString s, list) 
{ 
     TEST_F(AppsName, test_i) 
     { 
      //... 
     } 
} 

我認爲這項工作圍繞着:我做了SetUp()TearDown()循環的每個循環中。但爲此,我必須以TearDown()開始測試用例,並以setUp()結束測試用例。這不好。

有沒有另一種方法,例如定義燈具上方的環境?

+0

讓我看看我是否正確:你想創建一個包含循環的測試(這裏命名爲'test_wkf1'),並且你希望循環的每次迭代基本上使用一個新初始化的資源?如何定義一個擁有資源的類,並且每次進入循環時只需創建一個新實例? – 2014-03-06 14:37:55

回答

3

您可以使用值參數化測試。基本上,你會做類似如下:

class AppsTests : public ::testing::TestWithParam<QString> 
{ 
    // ... 
}; 

TEST_P(AppsTests, TestA) { /* ... */ } 
TEST_P(AppsTests, TestB) { /* ... */ } 

INSTANTIATE_TEST_CASE_P(MyTests, AppsTests, ::testing::ValuesIn(list)); 

在此之後,你會生成包含在list每個值的測試。

+0

太棒了!謝謝! –