PHPUnit测试套件命名约定

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHPUnit测试套件命名约定脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
PHPUnit manual强调了一些惯例:

> MyClass类的测试进入MyClasstest
> MyClassTest类存在于MyClassTest.PHP文件
> MyClassTest继承自PHPUnIT_Framework_TestCase
>测试是公共方法,名为test *

这将导致类似于此文件夹结构:

├── src/
│   ├── classes/
│   │   ├── MyClass.PHP # Different
│   └── ...
├── tests/
│   ├── testcases/
│   │   ├── MyClassTest.PHP # Different
│   ├── bootstrap.PHP
│   └── ...
└── ...

……和这个测试用例:

MyClassTest extends PHPUnit_Framework_TestCase {

    testMyMethod() {
        // Code here.
    }
}

我的问题

我想知道测试套件中使用的命名是否有任何理由不能反映项目的代码?例如,我认为文件名可以匹配:

├── src/
│   ├── classes/
│   │   ├── MyClass.PHP # Same
│   └── ...
├── tests/
│   ├── testcases/
│   │   ├── MyClass.PHP # Same
│   ├── bootstrap.PHP
│   └── ...
└── ...

如果使用PHP> 5.3,名称空间可用于允许类名匹配:

namespace MyPRoject\MyTests;

MyClass extends PHPUnit_Framework_TestCase { # The class name MyClass matches the class name used in my project's source.

    /**
     * @test
     */
    MyMethod() {  # The method name MyMethod matches the method name used in my project's source. 
        // Code here.
    }
}

请注意,使用了@tests注释,因此方法名称可以匹配.

解决方法

有理由不这样做:

>在同一名称空间中测试和测试类是有意义的
>否则,您需要使用类别名导入受测试的类,以将其与测试用例区分开来:

use MyProject\MyClass as MyActualClass;

如果您将testMyMethod视为替代方案,这可能听起来很吸引人,但这不是惯例.相反,您应该使用更多描述性测试方法名称,如testThatMyMethodReturnsTrueifFooIsBar.

脚本宝典总结

以上是脚本宝典为你收集整理的PHPUnit测试套件命名约定全部内容,希望文章能够帮你解决PHPUnit测试套件命名约定所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。