第八章 未完成测试
当开始书写新的测试用例类时,你也许想要从空的测试方法开始,譬如:
public function testSomething( ) {
}
我们必须跟踪书写的每个测试。空测试方法的问题是,它们被PHPUnit 框架解释作执行成功。这样产生的测试报告是没有用的。您不能区分测试实际上是成功了或是未完成。在未完成的测试方法中调用$this->fail()也不行,因为这被解释作为失败。这和未完成测试被错误解释成功一样糟糕。
如果我们认为一个成功的测试可以亮绿灯,测试失败亮红灯,那我们就需要黄灯来标记测试未完成。PHPUnit2 _ Framework_IncompleteTest是这个标志的接口,标记测试方法抛出的测试未完成或当前未完成的异常。PHPUnit2_Framework_IncompleteTestError 是这个接口的标准实现。
例9显示了测试用例类SampleTest包含了一个测试方法testSomething(),通过抛出PHPUnit2 _ Framework_IncompleteTestError异常,我们将此测试标为未完成测试。
例9.将测试标记为未完成
<?php
require_once 'PHPUnit2/Framework/TestCase.php';
require_once 'PHPUnit2/Framework/IncompleteTestError.php';
class SampleTest extends PHPUnit2_Framework_TestCase {
public function testSomething( ) {
// Optional: Test anything here, if you want.
$this->assertTrue(TRUE, 'This should already work.');
// Stop here and mark this test as incomplete.
// You could use any Exception which implements the
// PHPUnit2_Framework_IncompleteTest interface.
throw new PHPUnit2_Framework_IncompleteTestError(
'This test has not been implemented yet.'
);
}
}
?>
An incomplete test is denoted by an I in the output of the PHPUnit command-line test runner, as shown in the following example:
一个未完成的测试在PHPUnit 命令行测试器中由I 表示,如下例所示:
phpunit SampleTest
PHPUnit 2.3.0 by Sebastian Bergmann.
I
Time: 0.006657
There was 1 incomplete test case:
1) testSomething(SampleTest)
This test has not been implemented yet.
OK, but incomplete test cases!!!
Tests run: 1, incomplete test cases: 1.
--------------------------------------------------------------------------------------------------------------------
原文:
Chapter 8. Incomplete Tests
When you are working on a new test-case class, you might want to begin by writing empty test methods, such as:
public function testSomething( ) {
}
to keep track of the tests that you have to write. The problem with empty test methods is that they are interpreted as a success by the PHPUnit framework. This misinterpretation leads to the test reports being uselessyou cannot see whether a test is actually successful or just not yet implemented. Calling $this->fail( ) in the unimplemented test method does not help either because then the test will be interpreted as a failure. This would be just as wrong as interpreting an unimplemented test as a success.
If we think of a successful test as a green light, and a test failure as a red light, we need an additional yellow light to mark a test as being incomplete or not yet implemented. PHPUnit2_ Framework_IncompleteTest is a marker interface for marking an exception that is raised by a test method as the result of the test being incomplete or not currently implemented. PHPUnit2_Framework_IncompleteTestError is the standard implementation of this interface.
Example 9 shows a test-case class, SampleTest, that contains one test method, testSomething( ). By raising the PHPUnit2_ Framework_IncompleteTestError exception in the test method, we mark the test as being incomplete.
Example 9. Marking a test as incomplete
<?php
require_once 'PHPUnit2/Framework/TestCase.php';
require_once 'PHPUnit2/Framework/IncompleteTestError.php';
class SampleTest extends PHPUnit2_Framework_TestCase {
public function testSomething( ) {
// Optional: Test anything here, if you want.
$this->assertTrue(TRUE, 'This should already work.');
// Stop here and mark this test as incomplete.
// You could use any Exception which implements the
// PHPUnit2_Framework_IncompleteTest interface.
throw new PHPUnit2_Framework_IncompleteTestError(
'This test has not been implemented yet.'
);
}
}
?>
An incomplete test is denoted by an I in the output of the PHPUnit command-line test runner, as shown in the following example:
phpunit SampleTest
PHPUnit 2.3.0 by Sebastian Bergmann.
I
Time: 0.006657
There was 1 incomplete test case:
1) testSomething(SampleTest)
This test has not been implemented yet.
OK, but incomplete test cases!!!
Tests run: 1, incomplete test cases: 1.
分享到:
相关推荐
PHPUnit袖珍指南.doc PHPUnit 单元测试 从环境配置到 段元详细介绍
相比你正在使用的方法,采用PHPUnit进行测试并不是一个全然不同的东西。它们只是方法不同。两者之间的不同在于,检查程序行为是否符合正确是通过一批可以自动测试的代码片断来进行的。这些代码片断叫做单元测试。 在...
PHPunit pdf教程,非常不错,值得推荐
编写测试最耗时的部分是边编写设置整个程序到达一个已知状态,而后在测试结束后返回到原始状态。这个已知状态叫做测试的装置器。本文将为大家介绍PHPUnit袖珍指南之装置器。
当我们开始测试大量的array_*()函数时,每个都需要一个测试。我们可以每 个都从头写起。但是,更好的方法是一次性写好一个测试基础构架,以后就只用写每个测试不同的部分。PHPUnit就是这样一个基础构架。
PHPUnit的并行测试库
PHPUnit(PHP 单元测试框架)简介 ...这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试,最合它还可以和Selenium整合来完成大型的自动化集成测试。 相关阅读 同类推荐:程序框架
PHPUnit单元测试的配置及使用,PHPUnit单元测试的配置及使用,PHPUnit单元测试的配置及使用,PHPUnit单元测试的配置及使用,PHPUnit单元测试的配置及使用
php的单元测试,单元测试是每个开发必备的素质 PHPUnit作为php单元测试工具,提供各种支持,如mock
shopex之phpunit测试环境。
phpunit-speedtrap, 在PHPUnit测试套件中,报告缓慢运行的测试 phpunit-speedtrap SpeedTrap报告你的控制台中PHPUnit测试套件中运行缓慢的测试。影响测试执行时间的许多因素。 测试没有正确地从变量延迟( 数据库,...
针对接口自动化----phpunit 接口自动化测试系列,接口自动化用例的编写以及PHP及PHPUNIT的安装
这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 并且可以与phing集成来自动测试 最后它还可以和Selenium整合来完成大型的自动化集成测试 如何部署PHPUnit请参考...
使用PHPUnit进行测试与你曾经的做法并非完全不同。它只是在操作方式上有所不同。区别在于测试和执行成套测试,前者检查程序行为是否符合预期,后者是可运行的代码片断,它们自动测试软件各部分(单元)的正确性。...
基于 Laravel 框架的 phpunit 单元测试爬坑记录。适用于laravel初学者,和单元测试初学者。后期代码有过修改,欢迎大家加好友给建议~(WX:YAN-ZI-ZY)
另一个PHPUnit并发测试执行器 我不再维护该项目,它仅在这里作为存档。 另一种方法是,检查出 它是如何工作的? phpunit-parallel使用基于react-php的even循环与许多辅助进程进行通信。 它通过unix管道(fd = 3)...
这是我个人对phpunit+selenium测试环境搭建的一些总结绝对原创,本人只是菜鸟水平有很多没有写到的地方还望多多包涵。
一个PHPUnit插件,可以检测经过测试的代码或测试中的内存泄漏
phpunit-clever-and-smart, 更智能的runner 测试 PHPUnit的智能测试 runner 任务通过在数据库中存储测试用例并按以下顺序在连续运行中重新排序测试来启用快速反馈周期:失败和错误迄今为止未记录的测试按执行时间( ...
phalcon框架的基本使用方法 phpunit测试框架的安装和测试