Ich habe eine andere Gtest wo ich folgendes tun und es funktioniert gut:Gtest Setup Teardown Testumgebung - Ausgabe mit Klassenvariable
TEST(TEST1, TestName)
{
ClassName env;
const String original = env(Con::WorkingDir);
Con c = env;
}
Allerdings möchte ich dies für eine andere Gtest Klasse eingestellt werden und während des gesamten halten Testvorrichtung. Allerdings erhalte ich diese Fehlermeldung:
Aufruf eines Objekts der Klasse Typ ohne entsprechende Betreiber oder Konvertierungsfunktionen zu Zeiger-to-Funktionstyp.
Ich sehe initialize gtest, und ich bin mir nicht sicher, was ich dafür vermisse. Es könnte die Verwendung von statischen Variablen sein, mit denen ich nicht vertraut bin. Ich möchte jedoch nicht, dass ClassName statisch ist.
Was mache ich falsch damit?
//this is intended to setup env to use in teardown.
class TestEnvironment : public ::testing::Environment {
public:
static String getEn() {
ClassName env;
static const String sString = env(Con::WorkingDir); //env has the error message here
return sString;
}
}
class UnitTest : public ::testing::Test
{
public:
virtual void SetUp() {
//
}
virtual void TearDown() {
//set env back to initial value
getEn();
//process env info;
}
Können Sie uns bitte weitere Details über die Klasse 'ClassName' geben. Statement wie 'static const String sString = env (Con :: WorkingDir);' kann kompilieren, wenn 'env' ein Funktionsobjekt ist und die Fehlermeldung suggeriert, dass dies nicht der Fall ist. Ich würde vorschlagen, dass Sie Ihre Frage bearbeiten, indem Sie eine Definition von 'ClassName' hinzufügen. –
Ich habe es funktioniert durch Entfernen der statischen const – Michele
Die Klasse ist kein Funktionsobjekt. Ich habe noch nie davon gehört. – Michele