返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHPUnit在PHP项目中如何使用
  • 638
分享到

PHPUnit在PHP项目中如何使用

2023-06-30 11:06:02 638人浏览 安东尼
摘要

本文小编为大家详细介绍“PHPUnit在php项目中如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHPUnit在PHP项目中如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。单元测试介绍单元测试是

本文小编为大家详细介绍“PHPUnit在php项目中如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHPUnit在PHP项目中如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

单元测试介绍

单元测试是分别对程序的单元(方法, 函数)进行测试,判断执行结果是否符合预期

单元测试能协助开发者什么?

确保单元的执行结果

尽早发现程序中的错误

修改程序, 更加有信心

PHPUnit

PHPUnit 是 PHP 程式语言中最常见的单元测试 (unit testing) 框架,PHPUnit 是参考 xUnit 架构利用 PHP 实作出来。

安装PHPUnit

# 项目中安装$ composer require --dev phpunit/phpunit# 下载到本地$ wget https://phar.phpunit.de/phpunit-9.phar

使用项目中安装可以在项目中直接运行, 无需太多配置, 将 phar 下载到非项目文件夹, 可以减少项目代码的体积, 我一般采用下载到本地, 然后多个项目公用一个 phpunit.phar, 减少项目体积, 不过需要在 IDE中增加更多配置

配置autoload

添加下面的代码到composer.JSON PackageName是项目的名称,src是包含PHP class文件的文件夹地址,项目根目录下的子文件夹。

...    "autoload": {       "psr-4": {            "PackageName\\": "src/",            "PackageName\\Tests": "tests/"        }     },...

设置PHPUnit

在phpstORMLanguages & Frameworks >PHP >Test Frameworks 根据不同的加载方式设置不同的配置

PHPUnit在PHP项目中如何使用

如果是项目额外加载, 则需要把 phpunit 所在的文件夹作为 library 加入项目, 便于代码提示 Preferences | Languages & Frameworks | PHP , 加入 phpunit 文件夹

PHPUnit在PHP项目中如何使用

编写PHPUnit测试

  • 针对类 Example 的测试写在类 ExampleTest 中, ExampleTest 继承自 TestCase

  • 对于方法的测试命名为 test* 的公用方法

  • 在测试方法内,类似于 assertEquals() 的断言方法用来对实际值和预期值的匹配做出验证

ArrayTest  用 PHPUnit 测试数组操作

<?phpuse PHPUnit\Framework\TestCase;class ArrayTest extends TestCase{    public function testPushAndPop()    {        $stack = [];        $this->assertCount(0, $stack);        $stack[] = 'foo';        $this->assertEquals('foo', $stack[count($stack) - 1]);        $this->assertCount(1, $stack);        $this->assertEquals('foo', array_pop($stack));        $this->assertCount(0, $stack);    }}

在 IDE 中运行

  • 点击方法名称

  • 右键测试类

  • 右键测试文件夹

PHPUnit在PHP项目中如何使用

PHPUnit 断言

laravel 中除了标准的 PHPUnit 断言(assertEquals(), assertContains(), assertInstanceOf(), …更多断言请看Https://phpunit.readthedocs.io/zh_CN/latest/assertions.html?highlight=assertTrue#)之外, 还存在很多允许测试 WEB 应用的检测项目

assertPageLoaded($uri, $message = null)

检测最近的页面是否被加载, 如果不存在 url / message 时候会报错

assertResponseOk()

是否页面相应OK

assertReponseStatus($code)

是否响应指定的code

assertViewHas($key, $value = null)

视图中是否存在指定的数据

assertViewHasAll($bindings)

视图中是否存在指定的一系列数据

assertViewMissing($key)

指定视图中是否不存在这个数据

assertRedirectedTo($uri, $with = [])

检测是否重定向到指定的uri

assertRedirectedToRoute($name, $parameters = [], $with = [])

是否客户端重定向到指定的路由

assertRedirectedToAction($name, $parameters = [], $with = [])

是否重定向到 action

assertSessionHas($key, $value = null)

session 中是否存在 key/ value

assertSessionHasAll($bindings)

session 中是否存在指定的 kv

assertSessionHasErrors($bindings = [])

session 是否存在错误

assertHasOldInput()

session 中是否存在以前的数据

示例 xml 文件

phpunit.xml at 9.x · laravel

<?xml version="1.0" encoding="UTF-8"?><phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"    bootstrap="vendor/autoload.php"    colors="true">    <testsuites>        <testsuite name="Unit">            <directory suffix="Test.php">./tests/Unit</directory>        </testsuite>        <testsuite name="Feature">            <directory suffix="Test.php">./tests/Feature</directory>        </testsuite>    </testsuites>    <coverage processUncoveredFiles="true">        <include>            <directory suffix=".php">./app</directory>        </include>    </coverage>    <php>        <env name="APP_ENV" value="testing"/>        <env name="BCRYPT_ROUNDS" value="4"/>        <env name="CACHE_DRIVER" value="array"/>        <!-- <env name="DB_CONNECTION" value="sqlite"/> -->        <!-- <env name="DB_DATABASE" value=":memory:"/> -->        <env name="MAIL_MAILER" value="array"/>        <env name="QUEUE_CONNECTION" value="sync"/>        <env name="SESSION_DRIVER" value="array"/>        <env name="TELESCOPE_ENABLED" value="false"/>    </php></phpunit>

Php 的单元覆盖率

安装 xdebug / Phpunit

# 安装 xdebug$ pecl install xdebug

启用 xdebug

# php.ini 文件xdebug.mode = coverage

PHPUnit在PHP项目中如何使用

PHPUnit在PHP项目中如何使用

读到这里,这篇“PHPUnit在PHP项目中如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网PHP编程频道。

--结束END--

本文标题: PHPUnit在PHP项目中如何使用

本文链接: https://lsjlt.com/news/328350.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHPUnit在PHP项目中如何使用
    本文小编为大家详细介绍“PHPUnit在PHP项目中如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHPUnit在PHP项目中如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。单元测试介绍单元测试是...
    99+
    2023-06-30
  • PHP PHPUnit测试:在大型项目中管理复杂度
    随着项目规模的扩大,PHPUnit 测试套件的复杂度也会随之增加。管理这种复杂度对于确保测试的稳健性、可维护性和效率至关重要。本文探讨了在大型项目中有效管理 PHPUnit 测试复杂度的方法。 模块化测试架构 将测试套件模块化是降低复杂度...
    99+
    2024-04-02
  • PHP PHPUnit测试:在实际项目中的案例研究
    PHPUnit是一个广泛使用的PHP单元测试框架,它允许开发者编写和执行可重复、可靠的自动化测试。在现实世界项目中,PHPUnit可以显著提高代码质量,加快开发速度,并降低维护成本。 案例1:验证用户输入 问题陈述:在用户注册表单中,需要...
    99+
    2024-04-02
  • 如何在Laravel项目中使用PHP的LeetCode算法?
    Laravel是一个流行的PHP框架,LeetCode算法则是一种广泛使用的数据结构和算法练习平台。将两者结合使用可以提高我们的代码质量和效率。本文将介绍如何在Laravel项目中使用PHP的LeetCode算法。 第一步:安装LeetCo...
    99+
    2023-08-10
    laravel load leetcode
  • 如何在uniapp项目中使用mqtt
    目录一、uniapp插件市场的参考插件二、具体引入过程1.安装mqtt和uuid2.页面引入mqtt并调用3.运行结果由于要取一些实时数据并在手机app上展示,就想到用mqtt进行即...
    99+
    2024-04-02
  • 如何在React项目中使用AntDesign
    目录0.前言1.AntDesign是什么?2.AntDesign如何使用?3.如何具体使用AntDdesign的组件3-1.如何使用 antd 的Table组件3-2.如何使用 an...
    99+
    2024-04-02
  • 如何在Java项目中使用Lombok
    本文章向大家介绍如何在Java项目中使用Lombok的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许...
    99+
    2023-06-06
  • 如何在python项目中使用HFSS
    如何在python项目中使用HFSS?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网...
    99+
    2023-06-06
  • ArrayList如何在Java项目中使用
    本篇文章为大家展示了ArrayList如何在Java项目中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ArrayList的类图结构ArrayList继承于 AbstractList,实现了 L...
    99+
    2023-06-14
  • Polly如何在c#项目中使用
    今天就跟大家聊聊有关Polly如何在c#项目中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Polly是一个C#实现的弹性瞬时错误处理库它可以帮助我们做一些容错模式处理,比如:超...
    99+
    2023-06-14
  • Mock.js在Vue项目中如何使用
    本篇内容主要讲解“Mock.js在Vue项目中如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mock.js在Vue项目中如何使用”吧!Mock.js 初体验安装:npm ins...
    99+
    2023-07-02
  • 如何在Vue项目中使用vuex
    目录在Vue项目中使用vuex一、安装vuex二、创建store三、挂载store四、在组件中使用五、在Vue组件中监听Vuex总结在Vue项目中使用vuex 在一个vue项目中使用...
    99+
    2023-01-28
    Vue使用vuex Vue vuex Vue项目中使用vuex
  • enum如何在java项目中使用
    今天就跟大家聊聊有关enum如何在java项目中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。java 中enum的使用方法详解enum 的全称为 enumeration, 是 ...
    99+
    2023-05-31
    java enum ava
  • jshell如何在java9项目中使用
    jshell如何在java9项目中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。下载袭来是个pkg文件,双击安装,默认装到了/Library/Java这里,java9的...
    99+
    2023-05-31
    java9 ava jshell
  • zookeeper如何在java项目中使用
    这篇文章将为大家详细讲解有关zookeeper如何在java项目中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、zookeeper的基本原理数据模型,如下:ZooKeeper数据模型...
    99+
    2023-05-31
    zookeeper java ava
  • BufferedReader如何在Java项目中使用
    这期内容当中小编将会给大家带来有关 BufferedReader如何在Java项目中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。BufferedReader 介绍BufferedReader 是缓冲...
    99+
    2023-05-31
    java bufferedreader buf
  • ConcurrentHashMap如何在java项目中使用
    ConcurrentHashMap如何在java项目中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java 使用ConcurrentHashMap在某些场景下,我们想让线...
    99+
    2023-05-31
    java concurrenthashmap ava
  • GridView如何在Android项目中使用
    这期内容当中小编将会给大家带来有关GridView如何在Android项目中使用 ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。定义各种layout 和对应的item <&#63;...
    99+
    2023-05-31
    android gridview idv
  • log4j如何在Android项目中使用
    log4j如何在Android项目中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 Android 使用log4j前言: 如果要直接在a...
    99+
    2023-05-31
    android log4j roi
  • Arrays.asList()如何在Java项目中使用
    本篇文章给大家分享的是有关Arrays.asList()如何在Java项目中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Arrays.asList() 是将数组作为列表。...
    99+
    2023-05-31
    java arrays.aslist() ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作