Unit testing Visual Studio中使用Catch2进行单元测试的最佳实践 我对C++中的单元测试是新的,希望能对此有所帮助。 我使用VisualStudio2019进行开发,选择Catch2作为测试库,还安装了Catch2的测试适配器
我在GitHub上阅读了Catch2和Catch2测试适配器的文档,但仍然无法找到在VisualStudio中使用单元测试的正确方法 假设我已经有一个项目,其中包含一些类,我想测试这些类。 我应该将带有测试代码的文件放在同一个项目中,还是应该在解决方案中创建新的测试项目 当我尝试第一种方法时,除非注释掉项目的main()函数,否则测试资源管理器不会发现测试。 使用第二种方法,虽然我设置了头文件的正确相对路径,并引用了测试项目中的主项目,但我的类的方法仍然存在大量未解决的外部符号错误:Unit testing Visual Studio中使用Catch2进行单元测试的最佳实践 我对C++中的单元测试是新的,希望能对此有所帮助。 我使用VisualStudio2019进行开发,选择Catch2作为测试库,还安装了Catch2的测试适配器,unit-testing,visual-c++,catch-unit-test,catch2,Unit Testing,Visual C++,Catch Unit Test,Catch2,我在GitHub上阅读了Catch2和Catch2测试适配器的文档,但仍然无法找到在VisualStudio中使用单元测试的正确方法 假设我已经有一个项目,其中包含一些类,我想测试这些类。 我应该将带有测试代码的文件放在同一个项目中,还是应该在解决方案中创建新的测试项目 当我尝试第一种方法时,除非注释掉项目的main()函数,否则测试资源管理器不会发现测试。 使用第二种方法,虽然我设置了头文件的正确相对路径,并引用了测试项目中的主项目,但我的类的方法仍然存在大量未解决的外部符号错误: LNK20
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进行单元测试的正确方法,我将不胜感激。好的,我想我找到了一个合适的工作流,可以让Catch2在Visual Studio 2019中进行测试:
\define CATCH\u CONFIG\u MAIN
声明- 链接器->常规->附加库目录-在此处添加指向PuT的对象文件目录的路径
- Linker->Input->Additional Dependencies-在这里,用分号分隔put的对象文件名称(不是路径,只是.OBJ文件的名称!),这些名称在测试中使用。例如,如果您想测试MyCode.h中声明的一些代码,请将MyCode.obj文件名放在这里。从PuT引用更多头文件时,不要忘记更新此设置
^试验_
其中
控制测试项目文件名的过滤器。在这个特定的示例中,测试只会在名称以“Test\”开头的项目中发现
一些有用的链接:
Re:
尽管我设置了头文件的正确相对路径
-这解决了未定义的…
类错误;您有链接
问题。查看Catch2上的文档-您是否也应该将您的cpp文件编译到该测试项目中?我目前正在寻找一个解释,说明为什么所有这些都是必要的,而不仅仅是如何使其工作。我的问题可以在这里找到:
#define CATCH_CONFIG_MAIN
#include "path_to_catch2/catch.hpp"
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Catch2Adapter>
<FilenameFilter>^Test_</FilenameFilter>
</Catch2Adapter>
</RunSettings>