【发布时间】:2019-03-18 08:01:32
【问题描述】:
我在我的 C++ 项目中使用doctest 进行测试。
我想将测试代码与我的实现放在一起,正如库所说的那样,但我似乎无法弄清楚如何处理 doctest 实现代码。
我有一个如下所示的doctest.cpp 文件:
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h"
main.cpp 看起来像这样:
#include "thing.h"
int main(int argc, const char *argv[]) {
do_thing();
}
thing.h 是不言自明的,但 thing.cpp 看起来像这样:
do_thing() {}
TEST_CASE("Test thing") {
CHECK(1 == 1);
}
CMake 用于创建两个可执行文件,一个Tests 可执行文件和一个Main 可执行文件。
如果我在 Main 的项目源中不包含 doctest.cpp,我会收到未定义的引用错误,因为它在 doctest 中找不到所有测试内容的定义。
但是,如果我确实包含它,我会收到错误,因为一个目标中有多个 main() 函数。
我在 doctest 文档中找不到任何相关信息。
你打算如何解决这个问题?
【问题讨论】: