目录搜索
欢迎目录快速参考图基本信息服务器要求许可协议变更记录关于CodeIgniter安装下载 CodeIgniter安装指导从老版本升级疑难解答介绍开始CodeIgniter 是什么?CodeIgniter 速记表支持特性应用程序流程图模型-视图-控制器架构目标教程内容提要加载静态内容创建新闻条目读取新闻条目结束语常规主题CodeIgniter URL控制器保留字视图模型辅助函数使用 CodeIgniter 类库创建你自己的类库使用 CodeIgniter 适配器创建适配器创建核心系统类钩子 - 扩展框架的核心自动装载资源公共函数URI 路由错误处理缓存调试应用程序以CLI方式运行管理应用程序处理多环境PHP替代语法安全开发规范类库参考基准测试类日历类购物车类配置类Email 类加密类文件上传类表单验证详解FTP 类图像处理类输入类Javascript 类语言类装载类迁移类输出类分页类模板解析器类安全类Session 类HTML 表格类引用通告类排版类单元测试类URI 类User-Agent 类表单验证XML-RPC 和 XML-RPC 服务器Zip 编码类缓存适配器适配器参考适配器数据库类Active Record 类数据库缓存类自定义函数调用数据库配置连接你的数据库数据库快速入门例子代码字段数据数据库维护类查询辅助函数数据库类查询生成查询记录集表数据事务数据库工具类JavaScript类辅助函数参考数组辅助函数CAPTCHA 辅助函数Cookie Helper日期辅助函数目录辅助函数下载辅助函数Email 辅助函数文件辅助函数表单辅助函数HTML辅助函数Inflector 辅助函数语言辅助函数数字辅助函数路径辅助函数安全辅助函数表情辅助函数字符串辅助函数文本辅助函数排版辅助函数URL 辅助函数XML 辅助函数
文字

CodeIgniter 用户指南 版本 2.1.0

编辑文档、查看近期更改请 登录 或 注册  找回密码
查看原文

单元测试类

单元测试是一种用于测试应用程序中每个函数的软件开发方法。如果你对此概念不熟悉,或许需要google一下相关概念。

CodeIgniter的单元测试类非常简单,由一个评估函数和两个结果函数组成。它没打算成为一个十全的测试集,只提供一个简单的能够评测你的代码是否可以产生正确的数据类型及结果的解决方案。

初始化单元类

和大多数其它的类一样,在CodeIgniter中,单元测试类一样要在控制器中用函数$this->load->library 来初始化:

$this->load->library('unit_test');

测试类一旦加载,单元测试对象可以这样使用:$this->unit

运行测试:

运行一个测试应提供一个测试及期望的结果给以下函数:

$this->unit->run( test, expected result, 'test name', 'notes');

Where test is the result of the code you wish to test, expected result is the data type you expect, test name is an optional name you can give your test, and notes are optional notes. Example:

$test = 1 + 1;

$expected_result = 2;

$test_name = 'Adds one plus one';

$this->unit->run($test, $expected_result, $test_name);

你所给出的期望结果($expected_result)可以是字面上匹配(literal match)的也可以是数据类型上匹配的。下例为字面匹配(literal match):

$this->unit->run('Foo', 'Foo');

下例为类型匹配(data type match):

$this->unit->run('Foo', 'is_string');

注意第二个参数"is_string"的使用,它告诉函数测试你的测试用例把产生的将是一个字符串。下面是合法的类型列表:

  • is_object
  • is_string
  • is_bool
  • is_true
  • is_false
  • is_int
  • is_numeric
  • is_float
  • is_double
  • is_array
  • is_null

生成报告

你可以在每个测试后立刻显示结果,也可以运行若干测试后再产生报告。直接显示一个报告,可以用echo或者返回run函数(的执行结果):

echo $this->unit->run($test, $expected_result);

显示所有测试的完整的报告,可以这样:

echo $this->unit->report();

报告会以格式化了的HTML表格的形式呈现。如果你更喜欢看原始的数据,可以用下面代码获取一个数组:

echo $this->unit->result();

严格模式

默认情况下,单元测试类评测字面匹配(literal match)时比较宽松,考虑以下例子:

$this->unit->run(1, TRUE);

此测试评测的是一个整数,但是期望结果却是布尔值。不过,由于PHP是弱类型语言,使用正常的相等测试,以上代码返回的将是TRUE:

if (1 == TRUE) echo 'This evaluates as true';

喜欢的话,你可以让单元测试类在严格模式下执行,这样它会同时比较两数据的类型及值:

if (1 === TRUE) echo 'This evaluates as FALSE';

启用严格模式:

$this->unit->use_strict(TRUE);

启用/禁用单元测试

如果你想放一些测试在代码中,而又希望让它只在需要的时候运行,你可以禁用单元测试:

$this->unit->active(FALSE)

Unit Test Display

When your unit test results display, the following items show by default:

试翻译:当你显示单元测试结果的时候,以下信息(原以为条目)将被默认显示:

  • Test Name (test_name)
  • 试翻译:测试名称(test_name)
  • Test Datatype (test_datatype)
  • 试翻译:测试数据类型(test_datatype)
  • Expected Datatype (res_datatype)
  • 试翻译:期望数据类型(res_datatype)
  • Result (result)
  • 试翻译:结果(result)
  • File Name (file)
  • 试翻译:文件名称(file)
  • Line Number (line)
  • 试翻译:行数(line)
  • Any notes you entered for the test (notes)
  • 试翻译:手动添加的注释(notes)

You can customize which of these items get displayed by using $this->unit->set_items(). For example, if you only wanted the test name and the result displayed:

试翻译:使用$this->unit->set_items() ,你可以自定义显示信息(条目). 比如,如果你只期望显示测试名称和测试结果:

Customizing displayed tests

试翻译:自定义显示测试结果

$this->unit->set_test_items(array('test_name', 'result'));

Creating a Template

试翻译:创建显示模板

如果你希望测试结果以自定义的格式显示,这里提供一个简单的模板示例。注意必需的伪变量(seudo-variables):

$str = '
<table border="0" cellpadding="4" cellspacing="1">
    {rows}
        <tr>
        <td>{item}</td>
        <td>{result}</td>
        </tr>
    {/rows}
</table>';

$this->unit->set_template($str);

注意: 你的模板必须在单元测试运行之前声明。

 

翻译贡献者: Hex, iptton, zhou78620051
最后修改: 2011-11-24 15:46:57
上一篇:下一篇: