PHP单元测试使用
php与其他语言不太一样,单元测试需要自己安装和配置,相对麻烦一点,不过单元测试对于提高库的稳定性和健壮性还是非常给力的,下面教大家怎么配置PHP单元测试
注意:php需升级到7.1版本以上
配置说明
1.全局安装phpunit命令脚本
1 2 3 4 5 | $ wget https: //phar.phpunit.de/phpunit-7.0.phar $ chmod +x phpunit-7.0.phar $ sudo mv phpunit-7.0.phar /usr/local/bin/phpunit $ phpunit --version PHPUnit x.y.z by Sebastian Bergmann and contributors. |
2.全局安装安装phpunit代码
1 | composer global require phpunit/phpunit |
3.创建 phpunit.xml放在你的项目根目录, 这个文件是 phpunit 会默认读取的一个配置文件:
1 2 3 4 5 6 7 | < phpunit bootstrap="vendor/autoload.php"> < testsuites > < testsuite name="service"> < directory >tests</ directory > </ testsuite > </ testsuites > </ phpunit > |
4.配置phpstorm单元phpunit.phar路径,Languages & Frameworks > PHP > PHPUinit
如我的phpunit本地的路径为/usr/local/bin/phpunit
5.配置单元测试类提示,Languages & Frameworks > PHP > include path
如我的phpunit包本地的路径为/Users/chenqionghe/.composer/vendor/phpunit
6.单元测试编写
1.Class为Demo的测试类为DemoTest
2.测试类继承于 PHPUnit\Framework\TestCase
3.测试方法
- 必须为public权限,
- 一般以test开头,也可以给其加注释@test来标识
- 在测试方法内,类似于 assertEquals() 这样的断言方法用来对实际值与预期值的匹配做出断言。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php use Eoffcn\Utils\Arrays; use PHPUnit\Framework\TestCase; /** * Array测试用例 * Class ArraysTest */ class ArraysTest extends TestCase { public function testGet() { $array = [ 1 => [ 'b' => [ 'c' => 'cqh' ] ], 2 => [ 'b' => [ 'c' => 'cqh' ] ] ]; $this ->assertEquals( 'cqh' , Arrays::get( $array , '1.b.c' )); } } |
执行单元测试
1.执行单个文件单元测试
Phpstorm方式,当前测试类右键Run即可
命令行的方式,进行项目目录执行
1 | phpunit tests/ArraysTest.php |
2.执行全局单元测试
phpstorm方式
命令行方式,命令行下进入当前项目执行
1 | phpunit |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异