本文目录一览:
php单元测试怎么写
写过JAVA和C++的单元测试,PHP,没必要也没写过。单元测试主要是对核心的类和方法进行测试,在J2EE开发中,由于各种配置比较繁琐,并且是分层开发,所以很有必要写单元测试。比如,我做了一个service,我就可以针对这个service写个单元测试,取出这个bean,来验证是否正常,而不必等到ACTION层写好后,配置完整再来测试。对J2EE来说,service正常后,ACTION我就不用管了。做单元测试也容易提早发现问题。并且eclipse自带了iunit,使用极其方便。C++也一样,流程比较复杂,为了尽快验证和发现问题,有做单元测试的必要。而PHP这类脚本,不需要。我也很少见人提到过php的单元测试。本身逻辑就不复杂,而且大多数也不分层。NETBEAN自带了phpunit,不过从没用过如果还有不明白的话,你可以在后盾人看看视频找找答案,有空多看看时间长了,慢慢就明白了,希望能帮到你,给个采纳吧谢谢グッ!(๑•̀ㅂ•́)و✧
PHP 微型框架有什么好的推荐吗
1. Cake PHP
\
CakePHP是一个拥有极大灵活性的开发,维护和部署的快速开发框架。使用非常常见的MVC和ORM设计模式,及其配置规则帮助大家简化开发过程而无须开发过多的代码
和ZF类似,CakePHP不要求配置。使用简单。在IRC上拥有非常友好的社区#cakePHP,用来帮助新的用户快速开始学习。基于MIT License,拥有最佳实践,例如,安全,认证和session处理。拥有面对对象的方式帮助你更简单的使用。
源代码
2. Yii Framework
\
Yii是一个免费,开源的web应用开发框架,使用PHP5开发,帮助开发干净,简洁的设计并且鼓励开发开发。它帮助流水化的开发应用,并且保证高效,可扩展和易维护。性能极大的优化,非常适合开发任何类型的产品和项目。然而,它内建复杂,企业级别的应用。你拥有完整的控制,包括表现层和持久层,符合了企业级别开发的指导方针
源代码
3. Zend
\
Zend Framework 2 是一个使用PHP5.3+来开发web应用和服务的开源框架。使用100%的面对对象的代码并且使用PHP5.3种的新特性,例如名字空间,late static binding,lamda function和closure。Zend framewok 2 由成功的PHP框架Zend Framework 1演变而来,而Zend framework 1拥有1500万的下载量。Zend framework2拥有独特的组件结构,每一个组件都设计的尽量少和其它组件产生依赖关系。 ZF2遵循了严格的面对对象的设计原理。这种非严格的组件关系结构允许开发人员使用任何他想使用的组件。
源代码
4. Symfony
\
Smyfony是一个web应用框架,遵循了典型的MVC(model view controller)的设计结构,现在越来越受欢迎,Symfony基于MIT license,它使用一些PHP代码类的辅助类库得开发的过程简单
源代码
5. Webasyst
\
webasyst是一个开源的PHP框架用来开发平滑的多用户web应用或者复杂的网站。和其它的框架,例如,zend和symfony,比较起来,Webasyst框架更专注,并且允许更快和更高效的创建基于商业和团队使用的应用。这个框架提供了大量的现成的工具用来管理用户和授权,UI创建,移动端的访问等等
源代码
6. Laravel
\
Laravle是一个定位于优雅简单的PHP框架。变成不会变的苦闷。事实上,使用正确的工具绝对是让它成为一个让人愉悦的事情。Laravel适合所有的PHP开发人员,特别是初学者。除了完善的文章,Laravel的友好的社区一直帮助回答文档上没有涉及到的相关问题。使用Bundle来打包和分享代码绝对是一个非常棒的方式
源代码
7. Guzzle
\
Guzzle是一个帮助大家解决发送HTTP请求和创建web service 客户端中多余的步骤的框架。包含了用来创建强壮的web service客户端的工具,其中: 定义输入和输出的服务描述API,用来遍历分页资源的资源迭代,高效发送大量请求等等。
源代码
8. Phalcon PHP
\
Phalcon PHP是一个被发布成为C扩展并且提供高性能和低资源消耗的web框架。使用C书写,平台无关。作为这样的框架,PHP支持微软的windows系统, GNU/linux,Max OSX,你可以下载一个适合你的系统的二进制包或者自己编译
源代码
9. CodeIgniter
\
Codelgiter是一个强大的PHP框架,拥有非常小的体积,针对需要使用简单优雅的工具套件开发完整特性的web应用而开发。如果你需要处理共享主机账号或者客户时间有限制,并且厌倦了没有文档的大型框架的话,Codeignier可能非常适合你
源代码
10. Fuel PHP
\
Fuel是一个简单,灵活,社区驱动的PHP5.3 web框架,基于其它框架中的好的想法而开发一个框架。在Apache,,IIS和Nginx上测试过。Fuel使用另外一种方式实现,和其它框架不同,它努力成为社区驱动的框架。刚成立不到6个月,已经有30多个开发人员贡献了代码和文档。
php unit怎么测试为质量
PHPUnit是一个用PHP编程语言开发的开源软件,是一个单元测试框架。PHPUnit由Sebastian Bergmann创建,源于Kent Beck的SUnit,是xUnit家族的框架之一。本文将探索PHPUnit,特别介绍自动化单元测试的基本用法。你需要掌握PHP编程语言的基本知识才能继续。
介绍
单元测试是对单独的代码对象进行测试的过程,比如对函数、类、方法进行测试。单元测试可以使用任意一段已经写好的测试代码,也可以使用一些已经存在的测试框架,比如JUnit、PHPUnit或者Cantata++,单元测试框架提供了一系列共同、有用的功能来帮助人们编写自动化的检测单元,例如检查一个实际的值是否符合我们期望的值的断言。单元测试框架经常会包含每个测试的报告,以及给出你已经覆盖到的代码覆盖率。
heiing
heiing
翻译于 4年前
5人顶
顶 翻译得不错哦!
安装
PHPUnit 通常以 PEAR 包,Composer bundle 或是 PHAR 文件形式存在。如果你要安装它,你需要先安装 PHP Code Coverage 依赖。在 PEAR 中,你需要天价 phpunit.de 频道,并通过命令行安装两个包:
PHP Unit Testing with PHPUnit
(注意,在输入时,默认的 XAMPP 的 PEAR 安装已经被破坏:你需要在尝试上面代码之前先安装 PEAR PHAR)。
测试一个简单的类
试试只有单一方法的简单类:
class TruthTeller
{
public function() tellTruth
{
return true;
}
}
是的,现在 tellTruth 方法总是返回 TRUE,那么我们应改怎么通过单元测试确保今后它的返回值不变?
K6F
K6F
翻译于 4年前
4人顶
顶 翻译得不错哦!
使用PHPUnit,每组测试是PHPUnit_Framework_TestCase类的一个扩展类,它提供了常用的功能,如判断。下面是一个对上述tellTruth方法的一个基本测试:
require_once 'PHPUnit/Autoload.php';
require_once 'TruthTeller.class.php';
class TruthTester extends PHPUnit_Framework_TestCase
{
function testTruthTeller()
{
$tt = new TruthTeller();
$this-assertTrue($tt-tellTruth());
}
}
请注意,您需要包括PHPUnit的自动加载器和“被测对象”,在这种情况下的TruthTeller类文件。
我们用剩余的代码要做的就是判断,如果tellTruth方法被调用时,它将返回true。这些判断是PHPUnit的核心 - 它们将决定一个测试是通过还是失败。
Holiday_
Holiday_
翻译于 4年前
2人顶
顶 翻译得不错哦!
如果你启动了命令行提示,切换到你的测试所在目录,运行 phpunit TruthTester (参数是你的测试文件名,去除 .php 扩展名),PHPUnit 将会运行文件中指定的所有它能找到的测试(测试将是名字以 test 开头的所有方法)。
PHP Unit Testing with PHPUnit
如果你回到 TruthTeller 类,并将其方法的返回值改为 FALSE,你讲看到类似下面的信息:
PHP Unit Testing with PHPUnit
这就是单元测试的核心——编写断言并判断是否通过。当先前编写并测试通过的代码开始无法通过时,你就知道有更改的代码对现有代码起了负面影响。
在现实中,你肯定需要处理比上一个更复杂的情况。比如一个常见的测试是检查下面的outputArray方法是否返回了一个特定数据结构的数组。
class ArrayTeller
{
public function outputArray()
{
return array(1,2,3);
}
}
对此方法的一个简单测试可以这样写:
class ArrayTester extends PHPUnit_Framework_TestCase
{
function testArrayTeller()
{
$at = new ArrayTeller();
$result = $at-outputArray(1);
$this-assertInternalType("array", $result);
$this-assertCount(3, $result);
$this-assertEquals(1, $result[0]);
$this-assertEquals(3, $result[2]);
}
}
如你所见,使用PHPUnit进行单元测试时可以在每一行进行多样化的检查:可以检查ArrayTeller返回的是否是一个数组,而非任何其他数据类型;可以检查数组的长度;可以检查数组中的单个值。除这些外,还有其它一些功能的断言,比如如果你需要更复杂的判断,假设要知道一个返回值是否处于两个整数的区间内,只要你能用一个IF语句的结果来表述,你就可以用断言assertTrue来测试结果。可点击随后链接来访问PHPUnit官网文档中的所有可用断言列表,。
单元测试片面的讲就是编写覆盖被测方法所有预期行为的测试,最好基于规范文档,不过如果你在编写覆盖现有代码的单元测试,将其视为白盒测试的一种形式更有用。如果你知道一个如下的简单切换方法:
class Switcher
{
public function aOrB($switch, $a, $b)
{
if ($switch == TRUE)
{
return $a;
}
else
{
return $b;
}
}
}
… 你就知道需要编写两个测试,分别针对一种情形。但你开始质疑你是如何知道这些的——如果以后方法变为 True 返回 $a,False 返回 $b,其它情形抛出一个异常,理想情况是规范文档中的某处有提及。无论如何,上面方法的测试如下:
class SwitcherTester extends PHPUnit_Framework_TestCase
{
function testSwitchTrue()
{
$switcher = new Switcher();
$result = $switcher-aOrB(TRUE, 1, 2);
$this-assertEquals(1, $result);
}
function testSwitchFalse()
{
$switcher = new Switcher();
$result = $switcher-aOrB(FALSE, 1, 2);
$this-assertEquals(2, $result);
}
}
运行两个测试同在命令行运行 phpunit SwitcherTester 一样简单。
K6F
使用 setUp,简化多个测试
当你的测试需要覆盖越来越多的输入组合及数据设置时,使用函数: setUp 将会非常有帮助。setUp 是 PHPUnit_Framework_TestCase 类中你可以覆写以在类中所有及每个测试运行前运行的代码。(注意,还有一个简单的方法,tearDown,它会在所有测试结束后立即运行——这对关闭 socket 及文件指针很有帮助)
下面是如何精简代码的一个简单的例子。尝试一个依赖一些对象数据何输入的方法。
class DataTeller
{
private $data;
public function __construct($data)
{
$this-data = $data;
}
public function outputData($switch)
{
if ($switch == TRUE)
{
if (!empty($this-data))
return $this-data;
else
return FALSE;
}
else
{
return "switch off";
}
}
}
如果你继续之前幼稚的方法,我们需要编写三个测试,并实例化三个 DataTeller 对象,每个测试一次。然而,通过 setUp,我们可以讲对 DataTellers对象的创建外包,至少是3个中的两个。只有最后一个测试需要新的 DataTeller 被创建。
class DataTellerTester extends PHPUnit_Framework_TestCase
{
private $dt;
protected $data = "valid data";
function setUp()
{
$this-dt = new DataTeller($this-data);
}
function testOutputArraySwitchOff()
{
$this-assertEquals("switch off", $this-dt-outputData(FALSE));
}
function testOutputArraySwitchOn()
{
$this-assertEquals($this-data, $this-dt-outputData(TRUE));
}
function testOutputArrayEmptySwitchOn()
{
$new_dt = new DataTeller("");
$this-assertEquals(FALSE, $new_dt-outputData(TRUE));
}
}
PHPUnit使用断言来告诉你你所测试的代码是否如你预期那样工作。学到这里,你现在应该已经可以写一些简单的测试来覆盖一些功能相对比较独立的类了。但当要测试一些互相有交互操作的类时,就要面对真正的挑战了。为此,请收听下一次讲解,学习如何为静态类写测试,以及如何使用 mock(模拟对象)和 stubs(存根,桩点)来孤立你要测试的对象与其所在环境中其他代码的联系。
php单元测试怎么做
有集成单元测试框架,phpunit。这个框架封装了常用的测试方法,比如判等,存在等方法,只要继承这个测试类,就可以调用相应的方法来测试。
单元测试一般就是测试各个接口函数,根据给定的条件,判断是否是预期的结果。单元测试主要是为了改动函数或者修改了接口的时候,测试是否影响了之前正常的功能。
php如何进行单元测试
何为单元测试:
指对软件中的基本单元进行测试,如函数、方法等,以检查其返回值或行为是否符合预期;实际中软件是很复杂的,由许多组件构成,执行流程连贯在一起,要进行单元片段的测试,就需要为其提供执行上下文(或者说参数)和环境(比如打桩模拟一些对象)来运行,并监控其行为和返回值,为此我们就需要写出做这件事情的程序代码,这样的代码叫做测试用例。
许多测试用例有机结合在一起形成一个整体的测试,又叫做测试套件,被测试的程序代码叫做生产代码。phpunit这个软件就是用来帮助我们写测试用例并进行测试的。
php的单元测试:phpunit
在其官网有详细教程,这里介绍一些补充内容。
首先要明白phpunit软件本身就是由php语言实现,其使用是通过命令行进行的,并不是通过浏览器访问
明白这一点很重要,许多新人被卡在这里,很基础也很简单,但似乎没怎么被提及。
在官网下载后得到一个phar文件,同时下载phpunit使用文档,按照里面的安装方法进行安装,之后在命令行输入以下命令:
phpunit --help
如果显示出了帮助信息即安装成功,在命令行当前目录下建立一个测试用例为yunke.php,内容如下:
?phpuse PHPUnit\Framework\TestCase;class yunkeTest extends TestCase{public function testPushAndPop(){$stack = [];$this-assertEquals(0, count($stack));array_push($stack, 'foo');$this-assertEquals('foo', $stack[count($stack) - 1]);$this-assertEquals(1, count($stack));$this-assertEquals('foo', array_pop($stack));$this-assertEquals(0, count($stack));}}?
然后在命令行输入以下命令:
phpunit yunke
显示如下内容:
PHPUnit 5.7.12 by Sebastian Bergmann and contributors.. 1 / 1 (100%)Time: 159 ms, Memory: 7.00MBOK (1 test, 5 assertions)
恭喜,你已经成功运行了一个单元测试。
如何 进行 PHP 简单 测试
其实我们每天都在做单元测试。你写了一个函数,除了极简单的外,总是要执行一下,看看功能是否正常,有时还要想办法输出些数据,如弹出信息窗口什么的,这,也是单元测试,把这种单元测试称为临时单元测试。
楼上的这些工具太复杂了。
我认为,老师要求的,实际上就是要求每个功能单元都能够带入数据进行验证。报告只要把验证过程写清楚就OK了。