首页 > 解决方案 > 在 gtest 中参数化单个测试

问题描述

我正在寻找 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();                                                 
 }                                                                                       

标签: c++googletest

解决方案


推荐阅读