1.Pear的官方教程:https://phpunit.de/manual/current/zh_cn/phpunit-book.html#writing-tests-for-phpunit

2.将Pear的安装目录的路径,加入Path;在CMD中,执行 "pear list" ,

如果没有,PHPUnit模块,执行

3.在php.ini文件的 include_path 路径,将pear的相关的文件路径加进去 ,这是我的:

4. 在编写测试文件时,直接include下面,是找不到TestCase类的,

会报错:

PHP Fatal error:  Class 'TestCase' not found in H:\Slg\SlgCardsServer\actions\MyTest.php on line 26
这是,因为include_path路径下面的文件TestCase.php的TestCase并不存在,这是要自己编写的。

5. 如果不使用自己编写的TestCase类,可以继承 PHPUnit_Framework_TestCase 类。这个类继承了PHPUnit_Framework_Assert,提供了一些基本的asset***的断言方法。

6.如下代码:

 <?php

 include_once 'PHPUnit\TestCase.php';

 class Test extends PHPUnit_Framework_TestCase
{
public function testEmpty()
{
$stack = [];
$this->assertNotEmpty($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);
}
} ?>

当第一个函数的测试代码有问题时,运行结果:

7.多重依赖的代码测试:

 <?php
include_once 'PHPUnit\TestCase.php'; class Test extends PHPUnit_Framework_TestCase
{
public function testProduceFirst()
{
$this->assertTrue(true);
return 'First';
} public function testProduceSecond()
{
$this->assertTrue(true);
return 'Second';
} /**
* 下面的依赖
* @depends testProduceFirst
* @depends testProduceSecond
*/
public function testEquals()
{
return $this->assertEquals(
['first','second'],
func_get_args()
);
}
} ?>

运行结果:

10 .数据提供器

1)数据供给器方法必须声明为 public,其返回值要么是一个数组,其每个元素也是数组;要么是一个实现了 Iterator 接口的对象,在对它进行迭代时每步产生一个数组。每个数组都是测试数据集的一部分,将以它的内容作为参数来调用测试方法。

2)测试代码:

 <?php
include_once 'PHPUnit\TestCase.php'; class DataProviderTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider additionProvider
*/
public function testAdd($a,$b,$sum)
{
$this->assertEquals($sum,$a+$b);
} public function additionProvider()
{
return [
'Data1' => [1,2,3],
'Data2' => [4,7,9],
'Data3' => [5,4,9],
];
}
} ?>

运行的结果:

要点:

1.文档注释块(docblock)中使用 @test 标注将其标记为测试方法,用 @depends 标注来表达测试方法之间的依赖关系。

2.如果需要传递对象的副本而非引用,则应当用 @depends clone 替代 @depends

3.PHPUnit 不会更改测试的运行顺序,因此你需要自行保证某个测试所依赖的所有测试均出现于这个测试之前。

4.如果出现找不到PHPUnit相关的头文件,可以用在相关文件输出get_include_path()的结果查看. 在php.ini 可以找 “”include_path" 关键字,定位原因。

在 PHPUnit的目录下有一个文件Autoload.php,在设置了php.ini的include_path的变量之后,在使用文件中,包括该文件。

5.在安装XDebug的前提下(extension = XDEBUG_PATH  替换为 zend_extension = XDEBUG_PATH ),可以运行:phpunit  --coverage-html  "OUTPUT_PATH"  CalculatorTest ,生成一个报表,HTML格式,可以了解此次测试代码的覆盖率。 默认在当前目录生成OUTPUT_PATH目录。

6.不要将被测试的类和测试类放在同一个文件,这样是生成的XDEBUG代码覆盖率报告数据都是空的。

7. 测试类里面的测试函数一定要以 "test"开头 !!!

PHP PHPUnit的简单使用的更多相关文章

  1. linux下安装phpunit简单方法

    现在安装phpunit相当简单,只需要下载phar压缩格式的phpunit文件,给个执行权限,就可以执行了 以下是一段官方安装文档 wget https://phar.phpunit.de/phpun ...

  2. 使用PHPUnit + Selenium进行自动化测试

    project: blog target: how-to-use-phpunit-selenium-test.md date: 2015-12-22 status: publish tags: - S ...

  3. Laravel 单元测试

    前言 今天是第十三周周一,虽然接下来的时间会比较忙,比如各科的课设.考试.磨锤子.但是还是有种涅槃重生的感觉,昨晚的睡眠确实不怎么样,但是今天十分精神,已经想不起来多久没有这么早起了~让我累并快乐着吧 ...

  4. phpunit测试学习 1:一点简单的扼要有用的东西的总结 一点入门认识

    16:45 2015/12/8phpunit测试学习 1:一点简单的扼要有用的东西的总结  一点入门认识 具体的入门安装和入门实践请参照文中的推荐博客或网上其他博客推荐博客,我感觉这几篇博客写得很不错 ...

  5. PHPUnit单元测试的简单使用

    何为单元测试: 指对软件中的基本单元进行测试,如函数.方法等,以检查其返回值或行为是否符合预期:实际中软件是很复杂的,由许多组件构成,执行流程连贯在一起,要进行单元片段的测试,就需要为其提供执行上下文 ...

  6. 安装并使用PHPunit

    安装并使用PHPunit Linux 下安装PHPunit PHP 档案包 (PHAR)  要获取 PHPUnit,最简单的方法是下载 PHPUnit 的 PHP 档案包 (PHAR),它将 PHPU ...

  7. PHPUnit笔记

    PHPUnit是一个面向PHP程序员的测试框架,这是一个xUnit的体系结构的单元测试框架. 复杂的项目,通过单元测试能够快速排查bug,有效减少bug的产生.简单的项目,使用php自带的var_du ...

  8. 初试PHP单元测试TDD之安装PHPUnit

    东风吹战鼓擂,一年一度的校招季开始了,最为一名即将踏入社会的搬砖工,自然也闲不下来了.各种总结.恶补.面经在所难免.当遇见敏捷开发时,有点蒙了,这是什么东东,绝对不能吃!既然是一种软件开发的方式,听上 ...

  9. phpunit学习 3:

    16:17 2015/12/11phpunit学习 3:单元测试的大概步骤是:编写待测试类,编写测试用例类,编写测试类,测试.1.如果你有多个类,多个测试类的test类,那么可以编写一个AllTest ...

随机推荐

  1. 图像旋转 OpenCV实现

    经常对一幅图像进行旋转操作,OpenCV中提供了很方便易用的仿射变换函数warpAffine, 通过getRotationMatrix2D可以得到放射变换矩阵(矩阵大小2x3) #include &l ...

  2. Spring源码分析——BeanFactory体系之接口详细分析

    Spring的BeanFactory的继承体系堪称经典.这是众所周知的!作为Java程序员,不能错过! 前面的博文分析了Spring的Resource资源类Resouce.今天开始分析Spring的I ...

  3. 2016-2017-2《程序设计与数据结构》学生博客&git@OSC

    2016-2017-2<程序设计与数据结构>学生博客&git@OSC 博客园 20162301张师瑜 20162302杨京典 20162303石亚鑫 20162304张浩林 201 ...

  4. iOS 底层框架的浅析

    1.简介 IOS是由苹果公司为iPhone.iPod touch和iPad等设备开发的操作系统. 2.知识点 iPhone OS(现在叫iOS)是iPhone, iPod touch 和 iPad 设 ...

  5. C 语言学习 第二次作业总结

    本次作业内容,主要有以下几点: 新建 coding 帐号,且使用 coding 上传本次作业的代码 Printf及条件判断语句的使用 作业总结 作业总结: 同学们开始渐入佳境,能够较为流畅的写出合理的 ...

  6. 虚拟机VMware 12 Pro 永久许可证激活密钥

    热门虚拟机软件VMware Workstation Pro现已更新至v12.5.2.12.0属于大型更新,专门为Win10的安装和使用做了优化,支持DX10.4K高分辨率显示屏.OpenGL 3.3. ...

  7. bzoj4462: [Jsoi2013]编程作业

    KMP还是有点用处的嘛qwq 对于小写字母,修改其为前一个这个小写字母和它的距离 然后跑KMP就行了 跑得飞快 #include <iostream> #include <cstdi ...

  8. Freemarker判断是否为空

    1.判断对象是否为空 freemarker中显示某对象使用${name}. 但如果name为null,freemarker就会报错.如果需要判断对象是否为空: <#if name??> - ...

  9. 如何将Emmet安装到到 Sublime text 3?

    看清楚哦~~这是Sublime text 3不是2的版本,两者的安装还是有区别的,下面的方法是我感觉比较简单的,其他的要命令什么的感觉太复杂了,经测试是OK的. ONE:建议到官方下载Sublime  ...

  10. xpth 字符串截取

    <xsl:value-of select="substring(//div[@class='infos'],1,27)"/>