0

単体テストに Catch Lib を使用しています

以前は、ヘッダーを個別にテストし、TEST_CASE に問題はありませんでしたが、最終的にこれらすべてをプロジェクトに含めた後、次のような多くのエラーに直面しました。

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 ファイルに移動します。これが推奨されるソリューションです。
  • テスト ケースの 1 つを 1 行上または下に移動して、自動生成された名前が異なるようにし、衝突しないようにします。短期バックです。
  • これらのテストをインクルードして実際に共有したい場合は、テストの本体をヘッダー ファイルに残しますが、TEST_CASE マクロを削除し、代わりに CPP ファイルのテスト ケースから呼び出します。
于 2016-01-21T18:45:45.243 に答える