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);
    }
}
?>


相关文章
|
26天前
|
数据采集 机器学习/深度学习 大数据
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
29 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
|
3天前
|
IDE PHP 开发工具
PHP中的类型提示与严格模式:提高代码可维护性
随着PHP语言的发展,开发者对代码的可读性、可维护性和可靠性有了更高的要求。PHP中的类型提示(Type Hinting)和严格模式(Strict Mode)为开发者提供了更强的类型检查机制,有助于提升代码质量和减少潜在的错误,尤其是在大型项目中。
|
28天前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
26天前
|
安全 程序员 PHP
PHP中的异常处理:提升代码的健壮性
【10月更文挑战第8天】在编程的世界中,错误和异常是不可避免的。它们就像路上的坑洼,可能会让我们的程序“跌倒”。但是,如果我们能够正确地处理这些异常,就可以让我们的程序更加稳健,就像我们学会了如何在坑洼的路上稳稳地行走一样。本文将介绍PHP中的异常处理机制,以及如何使用它来提升我们的代码质量。
|
2月前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
2天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
20天前
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性和扩展性
【10月更文挑战第13天】 本文将探讨PHP中常见的设计模式及其在实际项目中的应用。通过对比传统编程方式,我们将展示设计模式如何有效地提高代码的可维护性和扩展性。无论是单例模式确保类的单一实例,还是观察者模式实现对象间的松耦合,每一种设计模式都为开发者提供了解决特定问题的最佳实践。阅读本文后,读者将能更好地理解和应用这些设计模式,从而提升PHP编程的效率和质量。
|
29天前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
38 4
|
25天前
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
56 0
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
1月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。