文档章节

PHPUnit 安装及简单单元测试示例

豆花饭烧土豆
 豆花饭烧土豆
发布于 2016/02/13 16:50
字数 751
阅读 65
收藏 2

1、概述及配置

Laravel 中集成了PHPUnit进行单元测试,实际上,使用PHPUnit进行单元测试在Laravel中是开箱即用的,测试的配置文件为根目录下的phpunit.xml,该配置文件为我们做好了所有配置工作:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="bootstrap/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist>
            <directory suffix=".php">app/</directory>
        </whitelist>
    </filter>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
    </php>
</phpunit>

testsuites中定义了测试文件存放路径为根目录下的tests目录。

filter中定义了需要进行单元测试的PHP文件存放位置。

php中配置了测试环境的环境变量,默认APP_ENV为testing,缓存驱动被设置为array,Session驱动被设置为array,队列驱动被设置为sync

2、Linux下安装PHPUnit

使用Laravel的测试功能之前需要先安装PHPUnit,以Homestead虚拟机为例,安装步骤如下:

wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
sudo mv phpunit.phar /usr/local/bin/phpunit

然后查看PHPUnit的版本验证是否安装成功:

phpunit --version

PHPUnit x.y.z by Sebastian Bergmann and contributors.

3、Windows下安装PHPUnit

整体上说,在 Windows 下安装 PHAR 和手工在 Windows 下安装 Composer 是一样的过程:

  1. 为 PHP 的二进制可执行文件建立一个目录,例如 C:\bin

  2. ;C:\bin 附加到 PATH 环境变量中(相关帮助

  3. 下载 https://phar.phpunit.de/phpunit.phar 并将文件保存到 C:\bin\phpunit.phar

  4. 打开命令行(例如,按 Windows+R » 输入 cmd » ENTER)

  5. 建立外包覆批处理脚本(最后得到 C:\bin\phpunit.cmd):

C:\Users\username> cd C:\bin
C:\bin> echo @php "%~dp0phpunit.phar" %* > phpunit.cmd
C:\bin> exit

    6.新开一个命令行窗口,确认一下可以在任意路径下执行 PHPUnit:

C:\Users\username> phpunit --versionPHPUnit 
x.y.z by Sebastian Bergmann and contributors.

参考:

https://phpunit.de/manual/current/zh_cn/installation.html#installation.phar.windows

3、使用PHPUnit实现简单测试

接下来我们使用Laravel提供的ExampleTest.php实现简单单元测试,首先我们修改tests目录下的ExampleTest.php文件如下:

<?php

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class ExampleTest extends TestCase
{
    /**
     * A basic functional test example.
     *
     * @return void
     */
    public function testBasicExample()
    {
        $this->visit('/')
            ->see('Laravel学院');
    }
}

其中visit方法用于访问指定路由页面,see方法则判断返回响应中是否包含指定字符串。

然后在routes.php中确保包含如下路由(如果没有的话添加该路由):

Route::get('/',function(){
    return view('welcome');
});

访问http://laravel.app:8000/,页面显示如下内容:

Laravel学院测试应用首页

然后到项目根目录下运行如下命令:

phpunit

输出结果如下:

Laravel单元测试通过页面

表示测试通过。

接下来我们修改ExampleTest.php测试方法如下:

public function testBasicExample()
{
    $this->visit('/')
        ->see('LaravelAcademy');
}

再次运行phpunit,则显示测试失败信息(部分截图):

Laravel单元测试失败输出

……

Laravel单元测试失败输出

测试结果会显示错误数目,错误位置及错误原因,方便我们快速定位错误并进行修复。


本文转载自:http://laravelacademy.org/post/2100.html

共有 人打赏支持
豆花饭烧土豆
粉丝 14
博文 353
码字总数 92682
作品 0
深圳
opensuse13.1 下phpunit+selenium

正在学习yii框架,在编写php代码的时候,要用到单元测试。之前只听说单元测试,没怎么了解过,这次要用到了。在yii框架中使用phpUnit进行单元测试真的很方便。从Yii1.1版本起,Yii已经紧密结...

Ron-Liu
2013/11/28
0
0
Windows下安装PHPUnit详解

Windows下安装PHPUnit详解 最近研究php的单元测试功能,在centos下和widows下安装了phpunit 首先要保证你装的php中安装了pear linux下输入命令pear 回车可看一下是否安装了 windows下可以用d...

peasant
2013/12/14
0
0
PHPUnit实践001--环境搭建及简单用法

windows环境下搭建PHPUnit可以直接下安装包傻瓜安装,博主项目使用的是php5.6 所以下载了3.7的phpunit 用composer安装phpunit composer require --dev phpunit/phpunit ^6.2 phpunit 用xml做...

lgy5451263
06/26
0
0
[PHPUnit]自动生成PHPUnit测试骨架脚本-提供您的开发效率【2015升级版】

场景 在编写PHPUnit单元测试代码时,其实很多都是对各个类的各个外部调用的函数进行测试验证,检测代码覆盖率,验证预期效果。为避免增加开发量,可以使用PHPUnit提供的phpunit-skelgen来生成...

暗夜在火星
2014/06/30
0
2
PHPUnit单元测试 - 我看过的PHP开源框架

PHPUnit 作为XUnit系列,大家应该对单元测试体系都比较了解,这里不再详细说明,感兴趣的同学可以参考PHPUnit官方文档:https://phpunit.de/manual/3.7/zh_cn/automating-tests.html UML静态...

暗夜在火星
2014/12/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

首个智能运维项目开源!腾讯织云Metis,用算法替代人为指定规则

10月20日,腾讯织云Metis 智能运维学件平台在OSCAR开源先锋日上宣布,正式对外开源。Metis 是AIOps(Algorithmic IT Operations),即智能运维领域的首个开源产品。智能运维主张通过算法从海...

腾讯开源
27分钟前
1
0
Java面试170题

1、面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? 4、float f=3.4;是否正确? 5、short s1 = 1; s1 = ...

lanyu96
27分钟前
0
0
利用Ant脚本生成war包

使用ant脚本前的准备 1、下载一个ant安装包。如:apache-ant-1.8.4-bin.zip。解压到E盘。 2、配置环境变量。新增ANT_HOME:E:\apache-ant-1.8.4;PATH增加:E:\apache-ant-1.8.4\bin。 3、检...

狼王黄师傅
30分钟前
1
0
优雅的写出类

前言 虽然现在已经是ES6的时代,但是,还是有必要了解下ES5是怎么写一个类的。 本文详述JavaScript面向对象编程中的类写法,并分步骤讲述如何写出优雅的类。 一、例子 例子为一个轻提示组件T...

peakedness丶
32分钟前
1
0
Python基础案例教程

一、超市买薯片 # 用户输入薯片的单价danjia = float(input("薯片的单价"))# 用户输入购买袋数daishu = int(input("购买的袋数"))# 计算总价zongjia = danjia * daishu# 输出结果...

linuxprobe16
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部