目前根据习惯和创作时间,单元测试和源文件的代码都是分开的。
engine/ classes/ Elgg/ Class.php tests/ phpunit/ Elgg/ ClassTest.php
是否可以考虑将它们放在一起:
engine/ classes/ Elgg/ Class.php ClassTest.php
好处:
- 可以很清晰地知道哪些文件缺少测试。
- 可以快速在源文件和单元测试文件之间跳转,而不需要切换文件夹。
- 遵循了需要一起修改的代码放在一起的原则,方便修改源码时同步修改单元测试文件。
- 在移动、拷贝源码时可以轻松地同时处理单元测试代码。
坏处:
- 将单元测试代码也作为源码处理,有些工具会出现问题,比如有些 IDE 会将单元测试里的代码提示出来。
- 很少有其它项目这么做。
- 在搜索源码时必须过滤单元测试的代码。
- 似乎仅仅为了切换文件方便而增加了其它很多的工作量。
- 如果单元测试和源码不是一一对应则不容易处理。
结论:
不要这么做。
参考链接
https://github.com/Elgg/Elgg/issues/7112
http://stackoverflow.com/questions/23990358/keeping-unit-tests-in-separate-files-in-d/24018009