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


相关文章
|
2月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
82 4
|
3月前
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
45 5
|
4月前
|
测试技术 持续交付 Python
自动化测试之美:打造高效的软件质量保障体系
【9月更文挑战第25天】在软件开发的海洋中,自动化测试是一艘能够引领我们高效航行的帆船。它不仅能帮助我们发现缺陷,更是一个持续集成和持续部署(CI/CD)过程中不可或缺的部分。本文将通过浅显易懂的语言和实际代码示例,引导读者理解自动化测试的价值,并学会如何实施它,从而提升软件的质量与开发效率。
54 4
|
3月前
|
测试技术 PHP 开发工具
php性能监测模块XHProf安装与测试
【10月更文挑战第13天】php性能监测模块XHProf安装与测试
43 0
|
4月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
62 2
|
4月前
|
设计模式 人工智能 算法
PHP中的设计模式:策略模式的深入解析与实践软件测试中的人工智能革命:提升效率与准确性的新篇章
在PHP开发中,理解并运用设计模式是提升代码质量和可维护性的重要途径。本文聚焦于策略模式(Strategy Pattern),一种行为型设计模式,它允许在运行时选择算法或业务规则。通过本文,我们将深入探讨策略模式的定义、结构、使用场景以及如何在PHP项目中有效地实现和利用策略模式。不同于性能优化等技术性摘要,本文着重于提供对策略模式全面而实用的理解,助力开发者编写出更加灵活和可扩展的应用程序。 本文深入探讨了人工智能在软件测试领域的应用,揭示了其如何显著提高测试过程的效率和准确性。通过实际案例分析,展示了AI技术在自动化测试、缺陷检测及结果分析中的关键作用,并讨论了实施AI测试策略时面临的挑
29 3
|
5月前
|
JSON Dubbo 测试技术
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决
67 2
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决
|
4月前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
218 4
|
5月前
|
敏捷开发 安全 jenkins
自动化测试在敏捷开发中的应用:加速迭代,保障质量
【8月更文挑战第2天】自动化测试在敏捷开发中扮演着至关重要的角色。通过提升测试效率、提高测试覆盖率、及时反馈与修复等优势,自动化测试为敏捷开发团队提供了强大的支持。然而,在实施自动化测试的过程中也面临着一些挑战。通过选择合适的测试框架和工具、制定测试计划和策略、持续优化和维护等策略以及遵循最佳实践并克服挑战,我们可以充分发挥自动化测试在敏捷开发中的潜力,为软件质量的提升和快速迭代保驾护航。
|
5月前
|
测试技术 C# 开发者
“代码守护者:详解WPF开发中的单元测试策略与实践——从选择测试框架到编写模拟对象,全方位保障你的应用程序质量”
【8月更文挑战第31天】单元测试是确保软件质量的关键实践,尤其在复杂的WPF应用中更为重要。通过为每个小模块编写独立测试用例,可以验证代码的功能正确性并在早期发现错误。本文将介绍如何在WPF项目中引入单元测试,并通过具体示例演示其实施过程。首先选择合适的测试框架如NUnit或xUnit.net,并利用Moq模拟框架隔离外部依赖。接着,通过一个简单的WPF应用程序示例,展示如何模拟`IUserRepository`接口并验证`MainViewModel`加载用户数据的正确性。这有助于确保代码质量和未来的重构与扩展。
148 0