我有一个大型代码库,其中有一些(太少了)单元测试;我正在向库中添加代码,尝试对新代码进行单元测试(我也想在将来当我更有经验时为旧代码添加单元测试)。
我们目前使用自定义(不是很精细)的单元测试框架;我想切换到 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 的一部分吗? (我将mylib1
和mylib2
链接到一个 DLL 中) - 单元测试的源代码应该放在
mylib1
目录下吗? - 因为我有
mylib1
和mylib2
,相应的单元测试应该如何定位 - 在同级目录中,放在一起等等? - 我应该把模拟对象的源代码放在哪里? (它们服务于
mylib1
和mylib2
)
最佳答案
- 单元测试是一种文档,因此我会保持目录结构不变
- 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/