Gtest:应为 Class-名称在“{”之前
Gtest: Expected Class-Name Before '{'
我正在尝试将 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 通过 Homebrew 安装在最新的 El Capitan OS X.
你要继承的class叫::testing::Test
,不是::testing::test
我正在尝试将 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 通过 Homebrew 安装在最新的 El Capitan OS X.
你要继承的class叫::testing::Test
,不是::testing::test