phpunit的安装以及在PhpStorm中的使用

phpunit的安装以及在PhpStorm中的使用

 

   单元测试这个词汇听起来很耳熟,很腻害的亚子,但是一直没有尝试过。经常听人家讲,一个项目有良好的单元测试代码,重构的勇气都大很多。摩拳擦掌,我们也来试试。

一、Windows下安装phpunit

1、PHP档案包(PHAR)

1)最简单的方法是在phpunit官网下载 PHPUnit 的 PHP 档案包 (PHAR),它将 PHPUnit 所需要的所有必要组件(以及某些可选组件)捆绑在单个文件中。

2)根据自己的php版本选择对应的phpunit档案包版本。

 

3)下载后将下载文件放到任意的一个目录,我这里放到D:/phpunit目录下。

2、配置环境变量

将D:/phpunit配置到环境变量中

3、执行命令

注意这里下载的是什么版本,在命令中要把版本号带上比如这里的8.5.5 。比如这里,在D:/phpunit目录下输入:

echo @php "%~dp0phpunit-8.5.5.phar" %* > phpunit.cmd

 回车之后,会生成一个phpunit.cmd的文件

 

 

4、检查是否安装成功

 

二、在phpstorm中配置使用phpunit

1.配置CLI Interpreters

 

 

 

2.Test Frameworks

 

 

3.配置单元测试的目录

 

 

 4.运行

 

 

 

三、使用

因为前面已经在IDE中引入了.phar的文件,所以下面直接用就可以了

1、demo1

Money.php

 1 <?php
 2 class Money
 3 {
 4     private $amount;
 5     public function __construct($amount)
 6     {
 7         $this->amount = $amount;
 8     }
 9     public function getAmount()
10     {
11         return $this->amount;
12     }
13     public function negate()
14     {
15         return new Money(-1*$this->amount);
16     }
17 }

MoneyTest.php:必须继承TestCase.php类

 1 <?php
 2 use PHPUnitFrameworkTestCase;
 3 require_once "Money.php";
 4 class MoneyTest extends TestCase
 5 {
 6     public function testCanBeNegated()
 7     {
 8         $a = new Money(1);
 9         $b = $a->negate();
10         //var_dump($b);
11         $this->assertEquals(-1, $b->getAmount()); //判断输出是否和预期的相等
12     }
13 }

 测试结果

2.demo2

将MoneyTest.php中assertEquals()方法中断言值改为-8,和预期的不一样试试

 1 <?php
 2 use PHPUnitFrameworkTestCase;
 3 require_once "Money.php";
 4 class MoneyTest extends TestCase
 5 {
 6     public function testCanBeNegated()
 7     {
 8         $a = new Money(1);
 9         $b = $a->negate();
10         //var_dump($b);
11         $this->assertEquals(-8, $b->getAmount()); //判断输出是否和预期的相等
12     }
13 }

测试结果

 更多的测试使用方法请看官网用例

2、PHPUnit 规定了一个测试类必须遵守如下的规定:

1)单元测试类名必须以 Test 结尾,
2)必须继承 PHPUnitFrameworkTestCase 基类
上面的规定是必须遵守的,如果代码没有遵守规定 PHPUnit 不会把他当做单元测试代码。除了以上的两条,还有一些良好的编码习惯可以参考:

1)单元测试代码都放在 test 目录下。
2)每个单元测试类以被测试的类名开头。例如被测试类为 CalculateService,那么单元测试类应该为 CalculateServiceTest。
3)每个单元测试函数应该为被测试函数名结尾。例如被测试函数为 abs,那么单元测试函数应该为 testAbs。
根据上面的规范,编写

3、phpunit中常用的几个断言

一般常用测试无非就是 "断言",其实就是看看产生的结果是不是符合预期,如果是,那就证明,已经测试通过,否则,失败,说明逻辑处理,存在一定的差异,导致不符合预期。

AssertTrue/AssertFalse    断言是否为真值还是假
AssertEquals          判断输出是否和预期的相等
AssertGreaterThan         断言结果是否大于某个值,同样的也有LessThan(小于),GreaterThanOrEqual(大于等于),
LessThanOrEqual           (小于等于).
AssertContains            判断输入是否包含指定的值
AssertType                判断是否属于指定类型
AssertNull                判断是否为空值
AssertFileExists          判断文件是否存在
AssertRegExp              根据正则表达式判断

 

原文地址:https://www.cnblogs.com/hld123/p/13071484.html