首页 > 代码库 > [讨论]是否将单元测试文件和源文件放在一起

[讨论]是否将单元测试文件和源文件放在一起

目前根据习惯和创作时间,单元测试和源文件的代码都是分开的。

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

[讨论]是否将单元测试文件和源文件放在一起