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

问题描述:

我有一个很大的代码库,有几个(太少)的单元测试;我将代码添加到库中,试图对新代码进行单元测试(我还希望在将来获得更多经验时为旧代码添加单元测试)。我应该把单元测试放在一个单独的库中吗?独立的子目录?

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

我的图书馆布局是:

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

    • SRC
        • Foo.cpp中
        • foo_part。 cpp
        • foo_part.h
        • UnitTests - 我应该把它移到mylib以外吗?
          • foo_test1.cpp
          • foo_test2.cpp
          • foo_test3.cpp
      • 酒吧
        • bar.cpp
        • bar_part.cpp
        • bar_part.h
        • UnitTests - 它属于这里吗?
          • bar_test1.cpp
          • bar_test2.cpp
          • bar_test3.cpp
    • 包括
      • foo.h中
      • bar.h
  • mylib2(70个文件,7000行的代码)

    • 看起来像上述
  • UnitTestFramework

    • SRC
      • MockObject1的mylib1。 cpp - 它属于这里吗?
      • Asserter.cpp - boost.test将取代它
      • TestFixture.cpp - boost.test将取代它
    • 包括
      • MockObject1.h
      • Asserter.h - boost.test将取代它
      • TestFixture.h - boost.test将取代它

我在这里提出以下问题:

  • 是否应单元测试是mylib DLL的一部分吗? (我将mylib1mylib2链接到一个DLL中)
  • 单元测试的源代码是否应位于mylib1目录下?
  • 因为我有mylib1mylib2,应该如何找到相应的单元测试 - 在兄弟目录中,在一起等?
  • 我应该在哪里放置模拟对象的源代码? (他们服务都mylib1mylib2

  1. 单元测试是各种类型的文档,所以我会离开的目录结构,因为它是
  2. 嘲笑/假货是在单元测试帮手,所以我不会将它们留在源目录中。在源中创建一个新目录,并将其移动到那里。

事实上,我甚至会进一步简化它:

+ 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 
+0

有没有机会,我打算通过馅所有300个文件放到一个目录下的“简化”树形结构。所以我想这个答案大多是说“不要改变单元测试的位置,它们在正确的位置”。 – anatolyg