2016-10-17 5 views
-1

J'ai une autre gtest où je fais ce qui suit et il fonctionne très bien:gtest configuration teardown TestEnvironment - problème avec la variable classe

TEST(TEST1, TestName) 
{ 
ClassName env; 
const String original = env(Con::WorkingDir); 

Con c = env; 
} 

Cependant, je veux que ce soit réglé pour une autre classe gtest et maintenez sur toute la appareil d'essai. Cependant, je reçois ce message d'erreur:

Appel d'un objet de type classe sans opérateur approprié ou fonctions de conversion pour le type pointeur à la fonction.

Je regarde initialize gtest, et je ne suis pas sûr de ce qui me manque pour cela. Cela pourrait être l'utilisation de variables statiques que je ne connais pas. Je ne veux pas que ClassName soit statique, cependant.

Qu'est-ce que je fais de mal avec ceci?

//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; 
} 
+0

Pouvez-vous s'il vous plaît nous donner plus de détails sur la classe 'ClassName'. Une instruction telle que 'static const String sString = env (Con :: WorkingDir);' peut être compilée si 'env' est un objet fonction, et le message d'erreur suggère que ce n'est pas le cas. Je vous suggère de modifier votre question en ajoutant une définition de 'ClassName'. –

+0

Je l'ai eu en travaillant en supprimant le const statique – Michele

+0

La classe n'est pas un objet de fonction. Jamais entendu cela. – Michele

Répondre

0
class UnitTest : public ::testing::Test { //can't use Environment here because of name conflict in our code, although that was used by static const variable setup in example link. 
public: 
String orig; 
} 

class UnitTest : public ::testing::Test 
{ 
public: 
virtual void SetUp() { 
    orig = code; 
} 

virtual void TearDown() { 
    //process orig; 
} 

Il est avéré que même si notre code était à la recherche d'une chaîne const, nous ne devons pas enregistrer comme const.