PHP单元测试-保障代码正确运行的护卫神

简介: 代码能否正确运行是应用的关键,如何保证代码的运行就成为至关重要的事情,“对付坦克的最好工具就是另外一台坦克”,保证代码的正确运行就是使用代码来保证,软件的的需求是变动的,很难保证这一次的改动,会不会将引起上次需求的什么变化。如果是测试人员发现了可以修改,但是如果部署到线上,引起的问题就会严重的。 单元测试就是提供一些条件,这些条件将产生一定的结果,如果结果不符就不能通过测试,不能通过测试
代码能否正确运行是应用的关键,如何保证代码的运行就成为至关重要的事情,“对付坦克的最好工具就是另外一台坦克”,保证代码的正确运行就是使用代码来保证,软件的的需求是变动的,很难保证这一次的改动,会不会将引起上次需求的什么变化。如果是测试人员发现了可以修改,但是如果部署到线上,引起的问题就会严重的。
单元测试就是提供一些条件,这些条件将产生一定的结果,如果结果不符就不能通过测试,不能通过测试产生的原因就是:测试代码有问题或者程序代码有问题。就需要去检查具体的原因。
引入单元测试产生的最直接的结果就是代码量要比以前多,二测试代码的管理问题,三,测试条件的更新问题,但是这些问题在保证代码质量面前都显示不是太重要。
PHP一般情况下用来做服务器后端资源的操作,比如说数据的读出与写入,用户的注册与消费都记录在数据库中。所以对php业务逻辑的测试就显的非常重要。
PHP的单元测试工具是PHPUNIT,它属于XUNIT的类工具,PHPUNIT的部署方法有两个,一种是通过composer进行安装,一种是下载phar包进行安装
单元测试命令是phpunit Test.php,然后根据显示的信息进行判断是否通过测试(在命令行下)。就是这样简单


PHPUNIT的安装方式大体上分为两种,composer安装与phar安装这两种
composer的安装方式比较简单使用方法:  composer require --dev phpunit/phpunit ^6.1


或者使用phar的方式来安装,也比较简单,phar相当于一个压缩包,这个压缩包是需要依赖php才可以运行的,所以如果机器上有php的话,可以新建一个phpunit.bat文件,并把这个文件 的位置加入到路径中这样就可以直接的输入phpunit 命令了,当然也可以不建立这样的bat文件,但是每次做调试的时候,都得带上php  phpunit.phar  **文件名,


bat文件内容类似这样


@ECHO OFF
setlocal DISABLEDELAYEDEXPANSION
SET BIN_TARGET=%~dp0/../phpunit/phpunit/phpunit
php "%BIN_TARGET%" %*
 
 
 或者phpunit.cmd也可以的
 echo @php "%~dp0phpunit.phar" %* > phpunit.cmd
 


在使用phpunit做开的过程中,一定要注意phpunit的版本,因为不同版本的phpunit的测试基类是不一样的,例如phpunit6.1以上版本

use PHPUnit\Framework\TestCase;
class StackTest extends TestCase
{
	
}

phpunit5的测试基类就是PHPUnit_Framework_TestCase
出现找不到类库的时候,首先看一下phpunit的基类的版本是否对应,然后再检查代码


对于业务类型的测试来说,业务之间存在着关联关系,比如说用户登录之后取得凭据,然后带着凭据去访问业务系统,PHPUnit使用
 @depends 标注来表达依赖关系



<?php
use PHPUnit\Framework\TestCase;
class StackTest extends TestCase
{
    public function testEmpty()
    {
        $stack = [];
        $this->assertEmpty($stack);
        return $stack;
    }
    /**
     * @depends testEmpty
     */
    public function testPush(array $stack)
    {
        array_push($stack, 'foo');
        $this->assertEquals('foo', $stack[count($stack)-1]);
        $this->assertNotEmpty($stack);
        return $stack;
    }
    /**
     * @depends testPush
     */
    public function testPop(array $stack)
    {
        $this->assertEquals('foo', array_pop($stack));
        $this->assertEmpty($stack);
    }
}
?>


相关文章
|
1月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
182 0
|
5月前
|
消息中间件 缓存 弹性计算
纯PHP+MySQL手搓高性能论坛系统!代码精简,拒绝臃肿
本内容分享了一套经实战验证的社交系统架构设计,支撑从1到100万用户的发展,并历经6次流量洪峰考验。架构涵盖客户端层(App、小程序、公众号)、接入层(API网关、负载均衡、CDN)、业务服务层(用户、内容、关系、消息等服务)、数据层(MySQL、Redis、MongoDB等)及运维监控层(日志、监控、告警)。核心设计包括数据库分库分表、多级缓存体系、消息队列削峰填谷、CQRS模式与热点数据动态缓存。同时提供应对流量洪峰的弹性伸缩方案及降级熔断机制,并通过Prometheus实现全链路监控。开源建议结构清晰,适合大型社交平台构建与优化。
199 11
|
2月前
|
存储 缓存 安全
php项目源码加密之Zend Guard Loader加密的代码解密可能性很小-优雅草卓伊凡
php项目源码加密之Zend Guard Loader加密的代码解密可能性很小-优雅草卓伊凡
91 2
|
2月前
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
87 0
|
2月前
|
人工智能 物联网 测试技术
智能化测试基础架构:软件质量保障的新纪元
本文介绍了智能化测试基础架构的核心构成与优势。该架构融合AI、领域工程与自动化技术,包含智能测试平台、测试智能体、赋能引擎和自动化工具链四部分,能自动生成用例、调度执行、分析结果,显著提升测试效率与覆盖率。其核心优势在于实现专家经验规模化、质量前移和快速适应业务变化,助力企业构建新一代质量保障体系。建议从构建知识图谱和试点关键领域智能体起步,逐步推进测试智能化转型。
|
4月前
|
监控 安全 测试技术
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
115 14
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
|
5月前
|
存储 jenkins 测试技术
Apipost自动化测试:零代码!3步搞定!
传统手动测试耗时低效且易遗漏,全球Top 10科技公司中90%已转向自动化测试。Apipost无需代码,三步实现全流程自动化测试,支持小白快速上手。功能涵盖接口测试、性能压测与数据驱动,并提供动态数据提取、CICD集成等优势,助力高效测试全场景覆盖。通过拖拽编排、一键CLI生成,无缝对接Jenkins、GitHub Actions,提升测试效率与准确性。
337 11
|
5月前
|
人工智能 自然语言处理 测试技术
自然语言生成代码一键搞定!Codex CLI:OpenAI开源终端AI编程助手,代码重构+测试全自动
Codex CLI是OpenAI推出的轻量级AI编程智能体,基于自然语言指令帮助开发者高效生成代码、执行文件操作和进行版本控制,支持代码生成、重构、测试及数据库迁移等功能。
604 0
自然语言生成代码一键搞定!Codex CLI:OpenAI开源终端AI编程助手,代码重构+测试全自动
|
7月前
|
人工智能 自然语言处理 测试技术
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
Potpie.ai 是一个基于 AI 技术的开源平台,能够为代码库创建定制化的工程代理,自动化代码分析、测试和开发任务。
526 19
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
|
7月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
674 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了