首页 文章

单元测试矢量字符串

提问于
浏览
-1

我在 生产环境 代码(A.cpp)中有这么简单的代码行,如下所示:

std::string A::getString(int i) {
    return sVect_[i];
}

Headers 如下:

class A{
public:
    std::string getString(int i);
    ...
private:
    vector<std::string> sVect_;
    ...
};

我一直在尝试使用googletest来测试getString()函数,但是错误一直在弹出:

error: invalid conversion from 'char* (*)(const char*, int)throw ()' to 'int'
error:   initializing argument 1 of 'std::string A::getString(i)'

这是我的测试程序:

TEST(ATest, getString){
    A a;
    EXPECT_EQ("c", a.getString(i));
}

我无法完全理解向量字符串的解决方法以及如何在我的测试程序中调用它而无需更改 生产环境 代码 . 我甚至使用hack,添加#define语句来访问私有成员,但仍然无法做到 .

我的测试实际上是如何成功调用该函数的?

注意:我在Linux上使用gcc . 提前谢谢你们 .

1 回答

  • 1

    也许错误信息具有误导性 . 你有没有在其他地方全球定义 i ?对我来说,它看起来像在本地范围内,因为它不知道变量 i 的值是什么,它是以意想不到的方式行为不端

    TEST(ATest, getString){
        A a;
        EXPECT_EQ("c", a.getString(i)); //here what is the 'i' and where is it defined
    }
    

相关问题