我应该将单元测试放在单独的库中吗?单独的子目录
Should i put unit tests in a separate library? Separate subdirectory?
我有一个大型代码库,其中包含一些(太少)单元测试;我正在向库中添加代码,尝试对新代码进行单元测试(我还想在将来有更多经验时为旧代码添加单元测试)。
我们目前使用一个自定义的(不是很详细)单元测试框架;我想切换到boost.test
。
我的库布局是:
-
mylib1(300个文件,70000行代码)
- 来源
- 噗
- 噗��
- 呜.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
- 噗��
- 包括
- 福.H
- 酒吧.H
- 来源
-
mylib2 (70 个文件, 7000 行代码)
- 看起来像上面的 mylib1
-
单元测试框架
- 来源
- MockObject1.cpp - 它属于这里吗?
- 断言者.cpp -
boost.test
将替换它 - 测试夹具.cpp -
boost.test
将替换它
- 包括
- 模拟对象1.h
- Asserter.h -
boost.test
将替换它 - TestFixture.h -
boost.test
将替换它
- 来源
我在这里问以下问题:
- 单元测试是否应该成为
mylib
DLL 的一部分?(我将mylib1
和mylib2
链接到一个DLL) - 单元测试的源代码是否应该位于
mylib1
目录下? - 既然我有
mylib1
和mylib2
,那么相应的单元测试应该如何定位 - 在兄弟目录中,一起等? - 我应该把模拟对象的源代码放在哪里?(他们同时服务于
mylib1
和mylib2
)
- 单元测试是一种文档,因此我会保持目录结构不变
- 模拟/假货是单元测试中的帮助程序,因此我不会将它们留在源目录中。在源中创建一个新目录,并将它们移动到该目录。
实际上,我会进一步简化它:
+ 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++中从两个单独的for循环中添加两个数组
- 用C++在单独的头文件中完成函数体
- 类模板的成员功能的定义在单独的TU中完全专业化
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 如何使用单独文件中的派生类访问友元函数对象
- CoInitialize()在单独的线程上崩溃而不返回
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 单独定义模板化嵌套类方法的正确语法
- 如何将 2 个类分成单独的 .h 文件并正确设置它们
- 我怎样才能将所有子目录与 cmake 自动匹配
- C++ 链接到单独的.cpp文件说"multiple definitions"
- 从单独的文件中读取树
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- C++计算器,不能单独除以 0
- 使文件夹中的所有文件可供所有项目(子目录)访问
- 自 Windows 10 20H1 以来,具有单独线程的多个窗口停止工作
- 处理多个子目录中的 Makefile 依赖项并输出到单独的子目录
- 我应该将单元测试放在单独的库中吗?单独的子目录