有没有理由不让PHP单元测试与被测试的类一起?

时间:2015-11-07 11:50:20

标签: php unit-testing

在PHPUnit和PHPSpec等框架中使用PHP单元测试的标准做法似乎是将测试用例保存在远离被测试类的单独目录中,例如:

FoobarApp
├── Models
│   ├── SomeModel
├── Tests
│   ├── SomeModelTest

就我个人而言,我发现将每个测试放在它正在测试的类旁边更清晰,更有帮助,如下所示:

FoobarApp
├── Models
│   ├── SomeModel
│   └── SomeModelTest

我的问题是:有没有理由不使用此替代展示位置?这只是一个开发者偏好问题吗?

1 个答案:

答案 0 :(得分:3)

  

这只是开发者偏好问题吗?

基本上,是的。

它起初是一种偏好,在OOP语言中很常见,例如:同样在Java中,它们通常是分开的。

其他人认为将这些测试分开有更多好处:

  • 不要弄乱您的实施树
  • 对于单个实现类只有一个测试类,它很常见,但没有规则。如果它有意义,那么为您的实现类提供多个测试类可能是合适的。现在考虑到这一点,如果所有这些都在您的src/树中。
  • 单独清理以进行部署。没有人需要生产中的测试用例;将它们放在一个单独的目录中会使它变得容易排除。
  • 在搜索代码库时更容易分离。大多数时候我没有兴趣搜索测试

你既可以接受大多数开发人员习惯的东西,也可以接受自己的东西,没有人停止或强迫你。但是一旦你与其他人(团队@ work,OSS)合作,你会发现大多数人正在分离他们。

没有人会关心你的私人项目,但是如果你操作OSS并期望合作,那么你想通过应用共同的约定来为任何人轻松化。

例如:

我不是PSR-2的粉丝:

  • 在类/方法上单独{?不然
  • 4个空格?我更喜欢2。

但是你不喜欢标准:合作时有好处,作为一个团队思考。因此,我在所有项目中都改用了PSR-2,尽管我个人不喜欢它。

与他人合作时,个人自我无处可去。这并不是说你要服从一切。你决定自己作为一个更大的画面的一部分发挥得如何; - )