2016-10-17 4 views
-1

私は、次の操作を実行し、別のGTESTを持っており、それが正常に動作します:GTESTセットアップティアダウンTestEnvironment - 変数クラスの問題

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

Con c = env; 
} 

をしかし、私はこれは別のGTESTクラスに対して設定され、全​​体を通じて保持されるようにしたいですテストフィクスチャ。適切なオペレータまたは関数へのポインタ型へ 変換関数のないクラス型のオブジェクトの

コール:しかし、私はこのエラーメッセージを取得しています。

私はinitialize gtestを見ていますが、私はこれについて何が欠けているのか分かりません。それは私が慣れていない静的変数の使用かもしれません。私はClassNameを静的にしたくありません。

どうしたのですか?

//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

クラス 'ClassName'についてもっと詳しく教えてください。 'static const String sString = env(Con :: WorkingDir);'のようなステートメントは、 'env'が関数オブジェクトであればコンパイルでき、エラーメッセージはそれがそうでないことを示唆します。私は 'ClassName'の定義を追加して質問を編集することをお勧めします。 –

+0

静的なconstを取り除いて動作させました – Michele

+0

クラスは関数オブジェクトではありません。私はそれについて聞いたことがありません。 – Michele

答えて

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; 
} 

それは私たちのコードはconstの文字列を探していたにも関わらず、我々はCONSTとして保存する必要がないことが判明しました。