什么是SimpleTest?
SimpleTest 的核心是一个基于test case 类的测试框架。它们被编写为 base test case classes的扩展,每个被扩展的方法实际包含了测试代码。顶层测试脚本然后调用 run()
方法,以这些test case 出现的顺序来测试它们。每个方法被编写以调用各种开发者希望为真的断言,例如 assertEqual()。若希望值是正确的,成功的结果被分派到测试报告器
,但是任何失败触发一个警告以及偏差的描述。
一个测试案例如下...
- <?php
- require_once('simpletest/autorun.php');
- class MyTestCase extends UnitTestCase {
- function testCreatedLogFile() {
- $log = &new Log('my.log');
- $log->message('Hello');
- $this->assertTrue(file_exists('my.log'));
- }
- }
- ?>
这些工具是为开发者设计的。Tests are written in the PHP language itself more or less as the application itself is built. 使用 PHP 自身作为测试语言的优点在于无需学习新的语言,测试可以马上开始,开发者可以测试代码的任何部分。基础的,可以被应用代码访问的所有代码也可以被测试代码访问,若它们以相同的编程语言编写。
最简单的测试案例是 UnitTestCase。此测试案例类包含相等,引用和模式匹配的标准测试。所有这些测试,其基本的期望值是:你期望的一个函数或方法的结果是什么。这是目前开发中最常用的测试类型,构成了测试案例的 95%。
一个网络应用顶级的任务不是从它的方法和对象中生成正确的输出,而是生成网页。WebTestCase 类测试网页。它模拟一个网页浏览器请求一个页面,包括 cookies, proxies, 安全连接,认证,表单,框架和大多数导航元素。有了这个类型的测试案例,开发者可以宣称信息在当前页面,表单和 sessions 被正确地处理。
一个 WebTestCase 如下...
- <?php
- require_once('simpletest/autorun.php');
- require_once('simpletest/web_tester.php');
- class MySiteTest extends WebTestCase {
- function testHomePage() {
- $this->get('http://www.my-site.com/index.php');
- $this->assertTitle('My Home Page');
- $this->clickLink('Contact');
- $this->assertTitle('Contact me');
- $this->assertPattern('/Email me at/');
- }
- }
- ?>