我刚接触过C++中的单元测试,想得到一些关于这方面的建议。我使用VisualStudio2019进行开发,选择Catch2作为测试库,还安装了用于Catch2的测试适配器。
我在Catch2和Catch2的GitHub上都阅读了文档,但是我仍然无法找到在Visual中使用单元测试的正确方法。
让我们假设我已经有了一个项目,其中包含了一些类,并且我想测试这些类。我应该将带有测试代码的文件放在同一个项目中,还是应该在解决方案中创建新的测试项目?
当我尝试第一种方法时,不会发现测试,除非我注释掉了项目的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进行单元测试的正确方法,我将不胜感激。
发布于 2020-01-12 13:08:34
好的,我想我找到了一个合适的工作流来使Catch2测试在VisualStudio2019中工作:
中放置以下行
#define CATCH_CONFIG_MAIN
#include "path_to_catch2/catch.hpp"#define CATCH_CONFIG_MAIN测试项目配置属性,设置如下设置:引用更多的头文件时,不要忘记更新这个PuT
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Catch2Adapter>
<FilenameFilter>^Test_</FilenameFilter>
</Catch2Adapter>
</RunSettings>其中<FilenameFilter>控件筛选器用于测试项目文件名。在这个特殊的例子中,只有在名字以"Test_“开头的项目中才会发现测试。
现在,您应该在中看到您的测试。
一些有用的链接:
https://github.com/JohnnyHendriks/TestAdapter_Catch2/blob/master/Docs/Walkthrough.md
https://stackoverflow.com/questions/59645381
复制相似问题