【发布时间】:2020-01-08 11:57:08
【问题描述】:
我是 C++ 单元测试的新手,想获得一些建议。 我使用 Visual Studio 2019 进行开发,我选择了 Catch2 作为我的测试库,我还安装了 Catch2 的测试适配器。
我在 GitHub 上阅读了 Catch2 和 Catch2 测试适配器的文档,但我仍然无法找到在 Visual Studio 中使用单元测试的正确方法。
假设我已经有一个项目,其中包含一些类,并且我想测试这些类。 我应该将带有测试代码的文件放在同一个项目中,还是应该在解决方案中创建新的测试项目?
当我尝试第一种方法时,除非我注释掉项目的 main() 函数,否则测试资源管理器不会发现测试。 使用第二种方法,我的类方法出现了一堆未解决的外部符号错误,尽管我设置了正确的头文件相对路径并从测试项目中引用了主项目:
LNK2019 unresolved external symbol "public: bool __thiscall MyClass::Check(int,int)" (?Check@MyClass@@QAE_NHH@Z) referenced in function "void __cdecl ____C_A_T_C_H____T_E_S_T____0(void)" (?____C_A_T_C_H____T_E_S_T____0@@YAXXZ)
如果有人告诉我在 VS 中使用 Catch2 进行单元测试的正确方法,我将不胜感激。
【问题讨论】:
-
回复:
although I set correct relative paths to header files- 这解决了undefined...类型的错误;你有LINK问题。检查Catch2上的文档 - 您是否还应该将您的 cpp 文件编译到该测试项目中?
标签: unit-testing visual-c++ catch-unit-test catch2