Googletest编译错误:未在此范围中声明“xyzTest”
Googletest compilation errors: ‘xyzTest’ was not declared in this scope
我正在学习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
。
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- C++:无法访问声明的受保护成员
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 在函数内部的声明中初始化数组,并在外部使用它
- Visual Studio中的函数声明和函数定义问题
- c++类声明时,相同的例程,不同的成员变量类型
- Googletest编译错误:未在此范围中声明“xyzTest”