c++ - 我应该将单元测试放在单独的库中吗?单独的子目录?

标签 c++ unit-testing code-organization boost-test

我有一个大型代码库,其中有一些(太少了)单元测试;我正在向库中添加代码,尝试对新代码进行单元测试(我也想在将来当我更有经验时为旧代码添加单元测试)。

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

我的图书馆布局是:

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

    • 来源
        • foo.cpp
        • foo_part.cpp
        • foo_part.h
        • 单元测试 - 我应该将它移到 mylib 之外吗?
          • foo_test1.cpp
          • foo_test2.cpp
          • foo_test3.cpp
      • 酒吧
        • 酒吧.cpp
        • bar_part.cpp
        • bar_part.h
        • 单元测试 - 它属于这里吗?
          • bar_test1.cpp
          • bar_test2.cpp
          • bar_test3.cpp
    • 包括
      • foo.h
      • 酒吧.h
  • mylib2(70 个文件,7000 行代码)

    • 看起来像上面的mylib1
  • 单元测试框架

    • 来源
      • MockObject1.cpp - 它属于这里吗?
      • Asserter.cpp - boost.test 将替换它
      • TestFixture.cpp - boost.test 将替换它
    • 包括
      • 模拟对象1.h
      • Asserter.h - boost.test 将替换它
      • TestFixture.h - boost.test 将替换它

我在这里问以下问题:

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

最佳答案

  1. 单元测试是一种文档,因此我会保持目录结构不变
  2. mocks/fakes 是单元测试中的助手,因此我不会将它们留在源目录中。在源中创建一个新目录,并将它们移动到那里。

实际上,我会进一步简化它:

 + 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

关于c++ - 我应该将单元测试放在单独的库中吗?单独的子目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11191637/

相关文章:

javascript - 使用 QUnit 测试项目是否具有某个类

python - 如何确保 django 1.9 中的所有测试用例只加载一次夹具?

javascript - 在全局数组中放置数千个对象是否可行?

vb.net - 在 Visual Studio 代码下对齐文本

php - 是否可以在虚拟专用服务器 (VPS) 上运行 Win32 可执行文件?

c++ - C++ 内联函数中的 return 语句实际上会返回并终止代码流吗?

C++ 常量迭代器 C2662

c++ - C++ 中的多层命名空间规范

c# - 是否可以将 C# 事件处理程序推迟到其他处理程序被调用之后?

c++ - 随机化 if ... else 语句的顺序。什么是最有效的方法?