C++ 我应该把单元测试放在一个单独的库中吗?单独的子目录?

C++ 我应该把单元测试放在一个单独的库中吗?单独的子目录?,c++,unit-testing,code-organization,boost-test,C++,Unit Testing,Code Organization,Boost Test,我有一个很大的代码库,其中有一些(太少了)单元测试;我正在向库中添加代码,试图为新代码进行单元测试(我还想在将来有更多经验时为旧代码添加单元测试) 我们目前使用一个定制的(不是很复杂的)单元测试框架;我想切换到boost.test 我的图书馆布局是: mylib1(300个文件,70000行代码) src 福 foo.cpp foo_part.cpp 福乌第h部分 UnitTests-我是否应该将其移到mylib之外? foo_test1.cpp foo_test2.cpp foo_t

我有一个很大的代码库,其中有一些(太少了)单元测试;我正在向库中添加代码,试图为新代码进行单元测试(我还想在将来有更多经验时为旧代码添加单元测试)

我们目前使用一个定制的(不是很复杂的)单元测试框架;我想切换到
boost.test

我的图书馆布局是:

  • mylib1(300个文件,70000行代码)

    • src
        • foo.cpp
        • foo_part.cpp
        • 福乌第h部分
        • UnitTests-我是否应该将其移到mylib之外?
          • foo_test1.cpp
          • foo_test2.cpp
          • foo_test3.cpp
      • 酒吧
        • bar.cpp
        • bar_part.cpp
        • 巴鲁第h部分
        • 单元测试-它属于这里吗?
          • bar_test1.cpp
          • bar_test2.cpp
          • bar_test3.cpp
    • 包括
      • 福安
      • 酒吧
  • mylib2(70个文件,7000行代码)

    • 看起来像上面的mylib1
  • UnitTestFramework

    • src
      • MockObject1.cpp-它属于这里吗?
      • Asserter.cpp-
        boost.test
        将替换它
      • TestFixture.cpp-
        boost.test
        将替换它
    • 包括
      • 模拟对象1.h
      • Asserter.h-
        boost.test将替换它
      • TestFixture.h-
        boost.test
        将替换它
我在这里提出以下问题:

  • 单元测试应该是mylib的一部分吗?(我将
    mylib1
    mylib2
    链接到一个DLL中)
  • 单元测试的源代码应该位于
    mylib1
    目录下吗
  • 既然我有
    mylib1
    mylib2
    ,那么相应的单元测试应该如何定位-在兄弟目录中,一起,等等
  • 我应该把模拟对象的源代码放在哪里?(它们同时服务于
    mylib1
    mylib2
  • 单元测试是一种文档,因此我将保持目录结构不变
  • mock/fake是单元测试中的助手,因此我不会将它们留在源目录中。在源中创建一个新目录,并将它们移动到那里
  • 实际上,我会进一步简化:

     + mylib1 (300 files, 70000 lines of code)
        + unit_tests
          + test_foo.cpp
          + test_bar.cpp
        + mocks
          + mock_foo.hpp
          + mock_bar.hpp
        + foo.cpp
        + foo.hpp
        + bar.cpp
        + bar.hpp
     + mylib2
    similar as for mylib1
    

    我不可能通过将所有300个文件填充到一个目录中来“简化”树结构。所以我猜这个答案主要是说“不要改变单元测试的位置,它们在正确的位置”。