参数化gtest中的单个测试

时间:2018-07-10 14:27:10

标签: c++ googletest

我正在寻找pytest的 @ mark.parametrize 的gtest类似物。

我有一个灯具和几个使用它的 TEST_F -s。我想对其中一些测试进行参数化,每个测试具有不同的参数集。

具有不同参数的要求不允许我使用 TEST_P 。我可以为每个测试创建一个从主夹具派生的单独夹具,但它会产生太多样板代码。

是否有任何选项,或者 TEST_P 是gtest提供的唯一参数化实用程序?

这里是一个例子。这是人为的,但应该说明我的需求。

 class DBConnectionFixture : public ::testing::Test {                                    
     // create and store connection to database here                                     
 };                                                                                      

 // @parametrize(count = [1, 10, 50, 100])                                               
 TEST_F(DBConnectionFixture, TestFetchManyRows)                                          
 {                                                                                       
     auto rows = fetchRows(count);                                                       
     for (auto row : rows) {                                                             
         validateRow(row);                                                               
     }                                                                                   
     // some more code independent of count                                              
 }                                                                                       

 // @parametrize(errorKind = ["lost_packages", "reordered_packages", "broken_packages"]  
 TEST_F(DBConnectionFixture, TestWithNetworkError)                                       
 {                                                                                       
     mockNetworkError(errorKind);                                                        
     writeSomething();                                                                   
     readSomethingAndCheckCorrectness();                                                 
 }                                                                                       

0 个答案:

没有答案