将头文件导入catch c++单元测试框架
Importing a header file into a catch c++ unit testing framework
我刚开始使用Catch c++单元测试框架。
我试着测试我建立的一个类,比如说我有两个文件,cow.cpp
文件和cow.h
文件:cow.h
:
class Cow{
public:
Cow(std::string name);
void moo(std::string someWords);
private:
std::string name;
};
cow.cpp
:
Cow::Cow(std::string cowName){
name = cowName;
}
void Cow::moo(std::string someWords){
std::cout << "my name is " << name <<" mooo " << someWords <<"n";
}
现在我想为类写一个测试,所以我创建了一个测试文件testCow.cpp
,并包括catch.h
c++单头文件和cow.h
头文件,
但是现在当我尝试调用方法moo时,我得到一个未定义的方法调用,说它不存在,解决这个问题的唯一方法是将整个c++实现复制到测试文件中,这真的不是一个好的做法…我正在使用标准的g++
命令编译我的文件,并使用sublime文本编辑器编辑我的文件,所以没有什么特别的包括或绑定文件。
你知道为什么会发生这样的事情吗?怎么解决?
你需要链接到你的类的实现对象文件。
例如,将类实现编译为对象文件:
g++ -c -o cow.o cow.cpp
现在编译你的测试程序:
g++ -o testCow testCow.cpp cow.o
当构建一个程序时,你需要链接程序使用的所有目标文件。
或者你可以让编译器一次完成所有的编译和链接,给它所有的源文件:
g++ -o testCow testCow.cpp cow.cpp
但项目通常不是这样做的,因为随着项目的增长,它变得不切实际。
相关文章:
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 用于交叉编译和CMake的预处理器宏的单元测试
- C++ 用于单元测试的模板模板
- 提升 1.64 单元测试编译失败
- 单元测试欧拉到四元数实现失败
- 运行 C++ 单元测试时LNK2005链接错误
- 禁用自动捕获 Googletest 单元测试中的C++异常
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 使用 Google Test 对自定义断言函数进行单元测试
- 如何将我的 CMake 项目配置为运行所有单元测试?
- 在Qt C++单元测试中动态加载QQuickWindow而不是QQuickWidget
- MS 本机单元测试 - 断言::线程失败不起作用
- 如何获取 CMake 单元测试的相对路径?
- QTimer 超时不会在单元测试中触发
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 在 AtMega32a 上运行的C++的单元测试
- 使用 gtest 框架在单元测试代码中检查目标对象的私有变量的最佳实践是什么?
- 如何用 c++ 编写单元测试?