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

Googletest compilation errors: ‘xyzTest’ was not declared in this scope

本文关键字:声明 xyzTest 范围 错误 编译 Googletest      更新时间:2023-10-16

我正在学习TDD,使用GoogleTest框架。我已经成功地构建了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-phread-c/home/user1/scratch/proj1_unittest.cpp/home/user1/scratch/proj1_unittest.cpp:成员函数中的"虚拟"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。

是什么导致了这些错误?我该如何修复?

正如它所说,addOneTest没有在任何地方声明。我猜你是想打电话给addOne