PHPUnit单元测试

PHPUnit单元测试

一、概述

1. 什么是单元测试?

  • 【百度百科】单元测试是对软件中的最小可测单元进行检查和验证。
  • 是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。

2. 作用是什么?

  • 【废话】检查软件、程序的可行性,稳定性。
  • 通过单元测试能够避免在迭代、升级等过程中,引起重复的、多余的问题。
  • 避免在别人修改代码的时候,影响到你的逻辑

3. 哪些程序需要写单元测试(PHP)?

  • 【理想】理想的单元测试应当覆盖程序中所有可能的路径,包括正确的和错误的路径,个单元测试通常覆盖一个函数或方法中的一个特定路径。
  • 【现实】model、helper、controller中的函数必须测试、路径覆盖到所有可能性

二、PHPUnit的安装与集成CI框架

  • 略。。。。。后续再补

三、PHPUnit的使用

编写测试用例

  1. 测试的依赖关系 @depends
    PHPUnit支持对测试方法之间的显式依赖关系进行声明。这种依赖关系并不是定义在测试方法的执行顺序中,而是允许生产者(producer)返回一个测试基境(fixture)的实例,并将此实例传递给依赖于它的消费者(consumer)们。
     
    <?php
        class StackTest extends PHPUnit_Framework_TestCase
        {
            public function testEmpty()
            {
                $stack = array();
                $this->assertEmpty($stack);
                return $stack;
            }
            /**
              * @depends testEmpty
              */
            public function testPush(array $stack)
            {
                array_push($stack, 'foo');
                $this->assertEquals('foo', $stack[count($stack)-1]);
                $this->assertNotEmpty($stack);
                return $stack;
            }
            /**
              * @depends testPush
              */
            public function testPop(array $stack)
            {
                $this->assertEquals('foo', array_pop($stack));
                $this->assertEmpty($stack);
            }
        }                       
        ?>
    

  2. 默认情况下,生产者所产生的返回值将“原样”传递给相应的消费者。这意味着,如果生产者返回的是一个对象,那么传递给消费者的将是一个指向此对象的引用。如果需要传递对象的副本而非引用,则应当用 @depends clone 替代 @depends。
  3. 数据供给器 @dataProvider 测试方法可以接受任意参数。用 @dataProvider 标注来指定使用哪个数据供给器方法。 数据供给器方法必须声明为 public,其返回值要么是一个数组,其每个元素也是数组;要么是一个实现了 Iterator 接口的对象,在对它进行迭代时每步产生一个数组。每个数组都是测试数据集的一部分,将以它的内容作为参数来调用测试方法。
 <?php
class DataTest extends PHPUnit_Framework_TestCase
{
    /**
      * @dataProvider additionProvider
      */
    public function testAdd($a, $b, $expected)
    {
        $this->assertEquals($expected, $a + $b);
    }
    public function additionProvider()
    {
        return array(
          array(0, 0, 0),
          array(0, 1, 1),
          array(1, 0, 1),
          array(1, 1, 3)
        );
    }
}
?>

也可以是这样:
 <?php
class DataTest extends PHPUnit_Framework_TestCase
{
    /**
      * @dataProvider additionProvider
      */
    public function testAdd($a, $b, $expected)
    {
        $this->assertEquals($expected, $a + $b);
    }
    public function additionProvider()
    {
        return array(
          'adding zeros' => array(0, 0, 0),
          'zero plus one' => array(0, 1, 1),
          'one plus zero' => array(1, 0, 1),
          'one plus one' => array(1, 1, 3)
        );
    }
}
?>

    
对PHP错误进行测试
默认情况下,PHPUnit 将测试在执行中触发的 PHP 错误、警告、通知都转换为异常。利用这些异常,就可以,比如说,预期测试将触发 PHP 错误
 <?php
class ExpectedErrorTest extends PHPUnit_Framework_TestCase
{
    /**
      * @expectedException
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PhalApi 2.x 是一个轻量级的 PHP 开发框架,它提供了一些便捷的工具和功能,方便我们进行开发。在进行开发过程中,我们需要编写一些单元测试和浏览器测试,以确保代码的正确性和稳定性。 1. 单元测试 PhalApi 2.x 的单元测试使用 PHPUnit 进行测试,PHPUnit 是一个流行的 PHP 单元测试框架,它提供了一些便捷的工具和功能,方便我们进行单元测试。 编写单元测试的过程如下: 1)创建测试类 在 tests 目录下创建一个测试类,继承 \PHPUnit\Framework\TestCase 类,并在类中编写测试方法。例如: ```php use PHPUnit\Framework\TestCase; class DemoTest extends TestCase { public function testDemo() { // 测试代码 } } ``` 2)运行测试 在命令行中执行以下命令即可运行测试: ```bash ./vendor/bin/phpunit tests/DemoTest.php ``` 2. 浏览器测试 PhalApi 2.x 的浏览器测试使用 Selenium 进行测试,Selenium 是一个流行的浏览器自动化测试工具,它提供了一些便捷的工具和功能,方便我们进行浏览器测试。 编写浏览器测试的过程如下: 1)安装 Selenium 在命令行中执行以下命令安装 Selenium: ```bash composer require --dev phpunit/phpunit-selenium ``` 2)编写测试类 在 tests 目录下创建一个测试类,继承 \PHPUnit_Extensions_Selenium2TestCase 类,并在类中编写测试方法。例如: ```php use PHPUnit_Extensions_Selenium2TestCase; class DemoBrowserTest extends PHPUnit_Extensions_Selenium2TestCase { protected function setUp() { $this->setBrowser('firefox'); $this->setBrowserUrl('http://localhost/'); } public function testDemo() { $this->url('/'); $this->assertEquals('Demo', $this->title()); } } ``` 3)运行测试 在命令行中执行以下命令即可运行测试: ```bash ./vendor/bin/phpunit tests/DemoBrowserTest.php ``` 以上就是 PhalApi 2.x 的单元测试和浏览器测试的简单介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值