Google测试夹具:传递一个类成员大小

时间:2013-12-09 16:33:21

标签: c++ googletest

我设法在我的小程序上成功设置谷歌测试并创建一个夹具类。我尝试测试我的类Genealogy的整数“start_ind_id_array_”公共成员的向量的大小。 这是代码:

class BuildgenTest : public ::testing::Test {   
protected:

    virtual void SetUp(){
    const string pedigree_fileName("../input_files/genealogies.txt");   
    const string start_filename("../input_files/start");
    Genealogy  curGen;
    curGen.ReadPedigree(pedigree_fileName.c_str());
    curGen.SetStartIndividual(start_filename.c_str());  

    cout << curGen.start_ind_id_array_.size() <<"\n" ;
    }
    Genealogy curGen;

};
TEST_F(BuildgenTest,veriftest){

    int number_of_starting_individuals = curGen.start_ind_id_array_.size();

    EXPECT_EQ(number_of_starting_individuals,3916);

}

第一个cout给了我期望的数字,3916。但是我的测试EXPECT_EQ失败了,因为我的数组的大小现在是0,而不是我预期的3916。

知道造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

你正在影响curGen。您可以在setup函数和类体中定义它。安装程序中的版本隐藏了正文中的版本:

virtual void SetUp(){
const string pedigree_fileName("../input_files/genealogies.txt");   
const string start_filename("../input_files/start");

Genealogy  curGen;
^^^^^^^^^^^^^^^^^

curGen.ReadPedigree(pedigree_fileName.c_str());
curGen.SetStartIndividual(start_filename.c_str());  

cout << curGen.start_ind_id_array_.size() <<"\n" ;
}