0

我正在使用 Catch Lib 进行单元测试

以前,我单独测试了一个标头,并且 TEST_CASEs 没有问题,但是在最终将所有这些包含到项目中之后,我遇到了很多这样的错误:

c:\dev\workspace\algolist\src\algolist.hpp(143): error C2374: '`anonymous-namespace'::autoRegistrar143': redefinition; multiple initialization
c:\dev\workspace\algolist\src\mfactory.hpp(143): note: see declaration of '`anonymous-namespace'::autoRegistrar143'
c:\dev\workspace\algolist\src\algolist.hpp(143): error C2084: function 'void ____C_A_T_C_H____T_E_S_T____143(void)' already has a body
c:\dev\workspace\algolist\src\mfactory.hpp(143): note: see previous definition of '____C_A_T_C_H____T_E_S_T____143'

有人可以解释一下这是什么意思吗?

4

1 回答 1

1

看起来您将 TEST_CASE 放在 HPP 文件中,然后将它们都包含在同一个 CPP 文件中。你有几个选择:

  • 将测试用例移至 CPP 文件。这是首选的解决方案。
  • 将其中一个测试用例向上或向下移动一行,以便自动生成的名称不同,因此不会发生冲突。这是一个短期的回归。
  • 如果你真的想通过包含它们来分享这些测试的作用,那么将测试的主体留在头文件中,但删除 TEST_CASE 宏,而是从 CPP 文件中的测试用例中调用它们。
于 2016-01-21T18:45:45.243 回答