Googletest编译错误:未在此范围内声明“xyzTest”

时间:2013-08-15 23:17:41

标签: c++ compiler-errors g++ googletest

我正在使用GoogleTest框架学习TDD。我已经成功构建了Gtest,并且能够构建和运行样本。但是,当我尝试编写一个简单的示例时,我遇到了编译错误。

以下是我使用的源代码和构建命令:

// ################################################
//proj1.h
#ifndef  __SCRATCH_PROJ1_H
#define  __SCRATCH_PROJ1_H

int addOne(int i);

#endif /*__SCRATCH_PROJ1_H */

// ################################################

//proj1.cpp
#include "proj1.h"

int addOne(int i){
    return i+1;
}


// ################################################
//proj1_unittest.cpp

#include "proj1.h"
#include "gtest/gtest.h"

// Test Function
TEST(addOneTest, Positive) {
    EXPECT_EQ(1,addOneTest(0));            // <- Line # 24
    EXPECT_EQ(2,addOneTest(1));            // <- Line # 25
    EXPECT_EQ(40320, addOneTest(40319));   // <- Line # 26
}

TEST(addOneTest, Negative) {
    EXPECT_FALSE(addOneTest(-1));          // <- Line # 30
}


GTEST_API_ int main(int argc, char **argv) {
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

控制台输出:

  

g ++ -isystem $ {GTEST_DIR} / include -pthread -c   /home/user1/scratch/proj1_unittest.cpp   /home/user1/scratch/proj1_unittest.cpp:在成员函数'virtual   void addOneTest_Positive_Test :: TestBody()':   /home/user1/scratch/proj1_unittest.cpp:24:5:错误:'addOneTest'是   未在此范围内声明   /home/user1/scratch/proj1_unittest.cpp:25:5:错误:'addOneTest'是   未在此范围内声明   /home/user1/scratch/proj1_unittest.cpp:26:5:错误:'addOneTest'是   未在此范围内声明/home/user1/scratch/proj1_unittest.cpp:In   成员函数'virtual void addOneTest_Negative_Test :: TestBody()':   /home/user1/scratch/proj1_unittest.cpp:30:5:错误:'addOneTest'是   未在此范围内声明

从错误消息中的行号判断,似乎尚未定义EXPECT_ *宏 - 但是,我在编译单元中包含了gtest / gtest.h。

导致这些错误的原因是什么?我该如何解决?

1 个答案:

答案 0 :(得分:0)

正如它所说,addOneTest没有在任何地方宣布。我猜你打算打电话给addOne