文档章节

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

豆花饭烧土豆
 豆花饭烧土豆
发布于 2016/02/13 16:50
字数 751
阅读 110
收藏 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

豆花饭烧土豆

豆花饭烧土豆

粉丝 16
博文 358
码字总数 93788
作品 0
深圳
私信 提问
加载中

评论(0)

opensuse13.1 下phpunit+selenium

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

Ron-Liu
2013/11/28
166
0
PHPUnit单元测试的简单使用

何为单元测试: 指对软件中的基本单元进行测试,如函数、方法等,以检查其返回值或行为是否符合预期;实际中软件是很复杂的,由许多组件构成,执行流程连贯在一起,要进行单元片段的测试,就...

osc_yw54cj9c
2019/04/07
1
0
Laravel 项目运行 phpunit 测试结果只显示点号

在laravel 项目的根目录下,运行 只显示 点号的情况 我尝试将 和 目录将 文件删除,然后再运行phpunit,就不只显示点号了 其中尝试了另外安装phpunit,降低 Laravel 安装的版本,重新安装一个...

osc_w55yykyo
2019/08/11
1
0
进阶篇:如何为ThinkPHP5编写优质的单元测试?

前言 在项目开发中,需要使用到ThinkPHP 5,为了编写单元测试,解决了几个难题,特此纪录分享一下。 难点1:TP5自带的单元测试感觉不好用,如何使用纯粹的原生PHPUnit? 在看云上,有TP5官方...

暗夜在火星
2019/05/08
256
0
laravel 自动化测试Tests

介绍 PHPUnit 是最古老和最著名的 PHP 单元测试包之一。它主要用于单元测试,这意味着可以用尽可能小的组件测试代码,但是它也非常灵活,可以用于很多不仅仅是单元测试。 PHPUnit 包含许多简...

bengozhong
2019/07/09
28
0

没有更多内容

加载失败,请刷新页面

加载更多

程序远自我修养

详见: https://leohxj.gitbooks.io/a-programmer-prepares/content/pm/good-product-manager.html

郭恩洲_OSC博客
29分钟前
15
0
使用git clone命令克隆文件出现error: RPC failed相关错误

使用git clone命令克隆文件出现error: RPC failed; curl 18 transfer closed with outstanding read data remain问题 笔者最近在使用git clone命令从github克隆源码到电脑时出现了以下问题 ...

独钓渔
56分钟前
22
0
Java中JNI的使用详解第三篇:JNIEnv类型中方法的使用

在来看一下C++代码: #include<iostream.h> #include "com_jni_demo_JNIDemo.h" JNIEXPORT void JNICALL Java_com_jni_demo_JNIDemo_sayHello (JNIEnv * env, jobject obj) { //获取obj中对象......

天王盖地虎626
今天
21
0
直播撬动618变局:抖快凶猛、商家清醒

  文/鸿键   来源:深响(ID:deep-echo)   核心要点   直播带货热潮持续升温,今年的传统电商大促节 618 成了第一个“全民直播”的 618,直播带货不仅为电商带来增量,同时也搅动着行...

计算无敌
今天
30
0
《一天一模式》— 观察者模式

一、观察者模式的概念 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题...

XuePeng77
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部