zoukankan      html  css  js  c++  java
  • 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              根据正则表达式判断

     

  • 相关阅读:
    【计算几何】多边形交集
    【计算几何】点在多边形内部
    【计算几何】线段相交
    【计算几何】多边形点集排序
    【JavaScript学习】JavaScript对象创建
    【CUDA学习】内核程序调试
    【CUDA学习】共享存储器
    【CUDA学习】全局存储器
    Charles是Mac的Fiddler抓包工具
    Charles是mac的iddler抓包工具
  • 原文地址:https://www.cnblogs.com/hld123/p/13071484.html
Copyright © 2011-2022 走看看