2016-03-11 73 views
3

我試圖轉換Gtest下的測試用例來使用測試夾具,因此我可以有一個共同的設置,因爲我添加了更多的測試。這是,然而,導致一個錯誤:Gtest:預期的班級名稱之前'{'

test_integrate.cc:4:47: error: expected class-name before '{' token 
    class IntegratorTest : public ::testing::test { 

此故障是什麼,我無法理解,因爲它通常從我的經驗,一個圓形的進口出現了,並出現了進口沒有變化,而不是工作代碼。完整的代碼如下:

#include "gtest/gtest.h" 
#include "utils/integrate.hpp" 

class IntegratorTest : public ::testing::test { 
protected: 
    Integrator integ; 
    VectorXf v, xdot; 
    float cur_time; 

    virtual void SetUp() { 
     integ = Integrator(1.0); 
     v = VectorXf::Ones(10); 
     xdot = VectorXf::Ones(10); 
     cur_time = 0.0; 
    } 
}; 

TEST_F(IntegratorTest, Euler) { 
    // Use e^t for a simple test algorithm 
    for (short i = 1; i < 5; i++) { 
     v = integ.Euler(v, xdot, cur_time); 
     xdot *= 2.0; 
     EXPECT_EQ(i, cur_time); 
     EXPECT_EQ(xdot, v); 
    } 
} 

如果我刪除夾具和去測試用例中初始化設置,代碼編譯就好了。這個工作代碼如下。

#include "gtest/gtest.h" 
#include "utils/integrate.hpp" 

TEST(Integrate, Euler) { 
    Integrator integ = Integrator(1.0); 
    VectorXf v = VectorXf::Ones(10); 
    VectorXf xdot = VectorXf::Ones(10); 
    float cur_time = 0.0; 

    // Use e^t for a simple test algorithm 
    for (uint16_t i = 1; i < 5; i++) { 
     v = integ.Euler(v, xdot, cur_time); 
     xdot *= 2.0; 
     EXPECT_EQ(i, cur_time); 
     EXPECT_EQ(xdot, v); 
    } 
} 

我似乎無法找到任何解釋我如何解決這個錯誤,使我可以編譯。

萬一它可能無所謂,編譯我跑GCC 5.3.0通過自制軟件安裝在了最新埃爾卡皮坦OS X.

回答

4

要繼承被稱爲::testing::Test類,不是::testing::test

+0

哇。我的部分總derp。甚至沒有想到錯誤可能是這樣的錯字的結果。感謝您的發現。 –

+0

在IBM上輸字錯誤!請參閱此處:http://www.ibm.com/developerworks/aix/library/au-googletestingframework.html#list1 – patrickvacek