У меня есть это действительно простой строки кода в моем продакшн-кода (a.cpp) следующим образом:Модульное тестирование вектор строка
std::string A::getString(int i) {
return sVect_[i];
}
с заголовком следующим образом:
class A{
public:
std::string getString(int i);
...
private:
vector<std::string> sVect_;
...
};
I «ве пытается проверить функцию GetString() с помощью googletest но ошибка продолжает выкатились:
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. Спасибо заранее, ребята.
что такое '' i' в a.getString (I) ' ? –
Когда я просматривал весь .cpp, значение 'i' инициализируется как 'int i = -1', и оно находится в другой функции, где оно возвращает значение i. В функции это будет в конечном итоге «i = param [paramI];» после утверждения if. Я проверил (cout) с помощью основного, чтобы узнать текущее значение i, и это «i = 1». Это какая-то помощь? –
Сообщение об ошибке заставляет это звучать, как будто есть некоторая функция 'char * i (const char *, int)' где-то. Возможно, попробуйте вместо 'a.getString (1)' и посмотрим, что произойдет. –