文档章节

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

豆花饭烧土豆
 豆花饭烧土豆
发布于 2016/02/13 16:50
字数 751
阅读 64
收藏 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
博文 350
码字总数 87881
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring-boot | 日志

引言 好久不见,都还好吗? 大家都知道,我一般都是带来实用的东西,这次也一样,我们来试试项目开发中的日志处理。 理论知识 1、为什么要用日志?你是否因为项目出现问题,查找日志文件定位...

成都_小冯同学
18分钟前
0
0
dubbo下的补偿实现(一)

背景 由于前面几篇文章涉及的问题 分布式事务的思考 在我们微服务的场景下 各种本地事务都没有办法控制的很好。 A服务调用B服务 当B服务成功提交之后 A发生了异常 这种情况下要如何处理呢??...

Mr_Qi
27分钟前
2
0
HTML显示json字符串并且进行格式化

通过pre标签进行格式化展示,使用JSON.stringify()方法转换。 代码如下:   <html> <head> <title>HTML显示json字符串并且进行格式化</title> </head> <body> <p id="show_p">{ "name": "B......

writeademo
48分钟前
0
0
LNMP——php-fpm

php-fpm的pool •vim /usr/local/php/etc/php-fpm.conf //在[global]部分增加include并删除我们之前www池子 • include = etc/php-fpm.d/*.conf • mkdir /usr/local/php/etc/php-fpm.d/ • ......

chencheng-linux
51分钟前
0
0
TensorFlow layers slim 模块搭建cnn对mnist分类,比较bn效果

shape变化 (?, 784)(?, 28, 28, 1)(?, 14, 14, 8)(?, 7, 7, 8)(?, 1, 1, 8)(?, 8)(?, 10) 结果对比,基本上还是有点用的 0.91725457 0.9232 0.9548 0.95530.9177273 0.9234 0....

阿豪boy
54分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部