我应该把单元测试放在一个单独的库中吗?独立的子目录?
问题描述:
我有一个很大的代码库,有几个(太少)的单元测试;我将代码添加到库中,试图对新代码进行单元测试(我还希望在将来获得更多经验时为旧代码添加单元测试)。我应该把单元测试放在一个单独的库中吗?独立的子目录?
我们目前使用一个自定义的(不是很精细的)单元测试框架;我想切换到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
- SRC
-
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
将取代它
- SRC
我在这里提出以下问题:
- 是否应单元测试是
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
有没有机会,我打算通过馅所有300个文件放到一个目录下的“简化”树形结构。所以我想这个答案大多是说“不要改变单元测试的位置,它们在正确的位置”。 – anatolyg