在PHPUnit和PHPSpec等框架中进行PHP单元测试的标准做法似乎是将测试用例放在一个单独的目录中,远离被测试的类,例如:
FoobarApp
├── Models
│ ├── SomeModel
├── Tests
│ ├── SomeModelTest
就我个人而言,我发现将每个测试放在它正在测试的类旁边的同一目录中更清晰、更有帮助,如下所示:
FoobarApp
├── Models
│ ├── SomeModel
│ └── SomeModelTest
我的问题是:有什么理由不使用这种替代安置吗?这只是开发者偏好的问题吗?
这只是开发者偏好的问题吗?
基本上是的。
它最初是一种偏好,在OOP语言中很常见,例如在Java中,它们通常是分开的。
其他人认为将这些测试分开有更多好处:
- 不要打乱实现树
- 为一个实现类拥有一个测试类是很常见的,但没有规则。如果这是有意义的,那么为实现类提供多个测试类可能是合适的。现在,如果它们也都在
src/
树中,请考虑这一点 - 单独清洁以进行部署。生产中没有人需要测试用例;将它们放在一个单独的目录中会使它们很容易被排除在外
- 在代码库中搜索时更容易分离。大多数时候,我对搜索测试不感兴趣
你可以接受大多数开发人员习惯的东西,也可以推出自己的东西,没有人会阻止或强迫你。但一旦你与其他人(teams@work,OSS)合作,你会发现大多数人都在把他们分开。
没有人会关心你的私人项目,但如果你开放源码软件并期望合作,你想通过应用通用约定来为任何人简化它。
例如:
我不是PSR-2:的粉丝
- 在类/方法上分离
{
?不 - 4个空格?我更喜欢2
然而,您不喜欢标准:协作有好处,作为一个团队思考。因此,我在所有的项目中都改用PSR-2,尽管我个人不喜欢它
与他人合作时,没有自我的容身之地。这并不是说你必须服从一切。作为大局的一部分,你自己决定自己打得有多好;-)