ich diese wirklich einfache Code-Zeile haben in meiner Produktionscode (A.cpp) wie folgt:Unit-Tests eine Vektor-String
std::string A::getString(int i) {
return sVect_[i];
}
mit dem Header wie folgt:
class A{
public:
std::string getString(int i);
...
private:
vector<std::string> sVect_;
...
};
I habe versucht, die getString() Funktion googletest zu testen, aber ein Fehler taucht immer wieder aus:
error: invalid conversion from 'char* (*)(const char*, int)throw()' to 'int'
error: initializing argument 1 of 'std::string A::getString(i)'
Das war mein Testprogramm:
TEST(ATest, getString){
A a;
EXPECT_EQ("c", a.getString(i));
}
ich nicht ganz die Abhilfe der Vektorkette erfassen konnte und wie es in meinem Test-Programm aufrufen, ohne jemals die Produktion Code zu ändern. Ich benutze sogar die hack, fügen #define-Anweisungen, um auf das private Mitglied zugreifen, aber immer noch nicht tun.
Wie sieht mein Test tatsächlich aus, um diese Funktion erfolgreich aufzurufen?
Hinweis: Ich bin auf Linux und mit gcc. Vielen Dank im Voraus Jungs.
was 'I' in 'a.getString (i)' ? –
Während ich die gesamte CPP durchsucht habe, wird der Wert 'i' als 'int i = -1' initialisiert und in einer anderen Funktion wird der Wert von i zurückgegeben. In der Funktion wird es schließlich 'i = param [paramI]; nach einer if-Anweisung. Ich habe überprüft (cout) mit dem Haupt, um den aktuellen Wert von i herauszufinden, und es ist "i = 1". Ist das hilfreich? –
Die Fehlermeldung macht es so, als ob irgendwo eine Funktion 'char * i (const char *, int)' steht. Vielleicht versuchen Sie stattdessen mit 'a.getString (1)' und sehen was passiert. –