PhpStorm搭建PHPUnit单元测试

背景

1.在项目开发中,经常会实现某个组件、模块、业务让第三方调用,怎么样能够稳定,无BUG的访问,测试是必须的。什么单元测试、集成测试、UI测试等应运而生。所以单元测试是所有测试的基石,集成测试之前必须保证无明显的BUG。

2.当某个模块、单元发现BUG后,及时修复也就成为理所当然的事情,但是怎么样保证修复后的稳定性,成为一大难点,所有在同样的环境和参数等情况下,再次执行单元测试,出现BUG的概率大大降低。

环境

系统环境: win7 64位

PHP:5.6.28

JetBrains PhpStorm:2016.3.1

步骤

一、打开PHPStorm,执行以下操作:

File -> Settings -> Languages & Frameworks -> PHP -> PHPUnit

 

二、配置PHPUnit Library:

在第一步的截图中,有三个方式:User Composer autoloader、Path to phpunit.phar、Load from include file (PEAR)

我们选择第二种方式来安装(Path to phpunit.phar),其他的两种请自行度娘。第三种如果已经安装XAMPP,可以选择XAMPP安装目录中的PHP目录下的pear目录,我的为:\xampp\setuppath2\php\PEAR,这里不做详细介绍。

选择第二种方式安装,需要下载phpunit.phar文件,如果已经下载好了,直接填写下载完成的整个目录,否则按照上面截图的蓝色文字下载,或者进入下面“参考资料”的官网去下载,下载完成后填写完成路径,然后Apply -> OK即可。

三、在项目内新建一个tests文件夹,专门存放单元测试用例。

tests -> new -> PHPUnit -> PHPUnit Test,在对话框内填写 Name(测试用例的类名)、File Name(测试用例的文件名称),其他的可选,然后点击OK即可。我创建的是MoneyTest文件,所以在tests目录下会产生MoneyTest.php文件。

 

 

四、编写测试用例

MoneyTest.php

<?php

/**
 * Created by PhpStorm.
 * User: Alvin Tang
 * Date: 2016/12/23
 * Time: 15:39
 * Author: 442353346@qq.com
 */

include_once '../src/Money.php';

class MoneyTest extends PHPUnit_Framework_TestCase
{
    public function testCanBeNegated()
    {
        $a = new Money(-1);

        $b = $a->negate();

        $this->assertEquals(-1, $b->getAmount());
    }

    public function testBoolean()
    {
        $this->assertTrue(true);
    }
}

备注:如果在编写测试用例的过程中,发现没有断言的智能提示,说明没有引入类库,以下截图可以引入类库,实现智能提示:External Libraries ->右键 -> Configure PHP Include Paths -> Include Path -> 点击右边的 +号,引入以上下载的PhpUnit.phar档案包的目录即可。


详细的测试用例请参考官方文档,这里不做一一介绍,对于每个项目有自己的需求:在我们公司由于历史原因,除了基本的核心模块和单元功能外,直接引入的方式进行测试,其他的全部走http进行模拟测试,方便每次修复BUG后的稳定性测试。

 

五、执行测试用例

在右上角的配置中,点击:Edit Configurations,把对应的单元测试文件加入PHPUnit中,让PHPUnit解释执行,详情看以下截图:

然后点击右上角的绿色箭头,或者在文件上面,右键点击Run “MoneyTest”。

以下是执行成功和失败后的结果截图:

 

 

六、导出报表

OK,恭喜你,一切搞定,赶紧对你的项目进行全面的单元测试吧。

参考资料

PHPUnit官网

PHPUnit官方中文帮助文档

利用单元测试在每个层上对 PHP 代码进行检查

Leave a Comment