directory search
Array Array Helper Benchmarking Benchmarking Class Caching Caching Driver Calendaring Calendaring Class CAPTCHA CAPTCHA Helper Config Config Class Cookie Cookie Helper Database Connecting to your Database Custom Function Calls Database Caching Class Database Configuration Database Forge Class Database Metadata Database Quick Start: Example Code Database Reference Database Utility Class DB Driver Reference Generating Query Results Queries Query Builder Class Query Helper Methods Transactions Date Date Helper Directory Directory Helper Download Download Helper Email Email Class Email Helper Encrypt Encrypt Class Encryption Encryption Library File File Helper File Uploading File Uploading Class Form Form Helper Form Validation Form Validation FTP FTP Class Functions compatibility_functions common_functions HTML HTML Helper HTML Table HTML Table Class Image Manipulation Image Manipulation Class Inflector Inflector Helper Input Input Class Javascript Javascript Class Language Language Class Language Helper Loader Loader Class Migrations Migrations Class Number Number Helper Output Output Class Pagination Pagination Class Path Path Helper Security Security Class Security Helper Session Session Library Shopping Cart Shopping Cart Class Smiley Smiley Helper String String Helper Template Parser Template Parser Class Text Text Helper Trackback Trackback Class Typography Typography Class Typography Helper Unit Testing Unit Testing Class URI URL User Agent XML XML-RPC and XML-RPC Server Zip Encoding Zip Encoding Class XML-RPC and XML-RPC Server Classes XML Helper User Agent Class URL Helper URI Class
characters

单元测试是软件开发的一种方法,其中为应用程序中的每个功能编写测试。如果你对这个概念不熟悉,你可以在这个主题上进行一些搜索。

CodeIgniter的单元测试类非常简单,包含一个评估函数和两个结果函数。它不是一个完整的测试套件,而是一个简单的机制来评估你的代码,以确定它是否产生正确的数据类型和结果。

  • 使用单元测试库

    • 定制显示的测试

    • 创建一个模板

    • 初始化类

    • 运行测试

    • 生成报告

    • 严格模式

    • 启用/禁用单元测试

    • 单元测试显示

  • 类参考

使用单元测试库

初始化类

像CodeIgniter中的大多数其他类一样,Unit Test类在您的控制器中使用$ this-> load-> library函数进行初始化:

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

加载后,单元测试对象将可用 $this->unit

运行测试

运行测试包括以下列方式提供测试和预期结果:

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

测试是您希望测试的代码的结果,预期的结果是您期望的数据类型,测试名称是可以给您测试的可选名称,注释是可选注释。例:

$test = 1 + 1;$expected_result = 2;$test_name = 'Adds one plus one';$this->unit->run($test, $expected_result, $test_name);

您提供的预期结果可以是文字匹配,也可以是数据类型匹配。这是一个文字的例子:

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

这是一个数据类型匹配的例子:

$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

  • is_resource

生成报告

您可以在每次测试后显示结果,也可以运行多个测试并在最后生成报告。要直接显示报告,只需回显或返回运行功能:

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

要运行所有测试的完整报告,请使用以下命令:

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

该报告将被格式化为HTML表格供查看。如果您更喜欢原始数据,则可以使用以下方法检索数组:

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

严格模式

默认情况下,单元测试类会松散地评估文字匹配。考虑这个例子:

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

测试正在评估一个整数,但预期的结果是一个布尔值。但是,由于PHP数据松散,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);

单元测试显示

当您的单元测试结果显示时,下列项目默认显示:

  • 测试名称(test_name)

  • 测试数据类型(test_datatype)

  • 预期的数据类型(res_datatype)

  • 结果(结果)

  • 文件名(文件)

  • 行号(行)

  • 您为测试输入的任何笔记(笔记)

您可以使用$ this-> unit-> set_test_items()来自定义其中哪些项目显示。例如,如果您只想显示测试名称和结果:

定制显示的测试

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

创建一个模板

如果你希望你的测试结果格式不同,那么你可以设置你自己的模板。这是一个简单模板的例子。请注意所需的伪变量:

$str = '<table border="0" cellpadding="4" cellspacing="1">{rows}        <tr>                <td>{item}</td>                <td>{result}</td>        </tr>{/rows}</table>';$this->unit->set_template($str);

注意

运行单元测试过程之前,必须声明您的模板。

类参考

class CI_Unit_testset_test_items($items)

参数:

$ items(array) - 可见测试项目列表

返回:

空虚

  • $ itemsarray) - 可见测试项目列表

Returns:  void
设置应在测试中可见的项目列表。有效的选项是:
  • test_name

  • test_datatype

  • res_datatype

  • result

  • file

  • line

  • notes

run($test[, $expected = TRUE[, $test_name = 'undefined'[, $notes = '']]])

参数:

$ test(mixed) - 测试数据$ expected(混合) - 预期结果$ test_name(字符串) - 测试名称$ notes(字符串) - 任何要附加到测试的注释

返回:

测试报告

返回类型:

  • $ test混合) - 测试数据

  • $预期混合) - 预期结果

  • $ test_namestring) - 测试名称

  • $ notesstring) - 任何要附加到测试的注释

Returns:  Test report
Return type:  string
Runs unit tests.

report([$result = array()])

参数:

$ result(array) - 包含测试结果的数组

返回:

测试报告

返回类型:

  • $ resultarray) - 包含测试结果的数组

Returns:  Test report
Return type:  string
生成关于已完成测试的报告。

use_strict([$state = TRUE])

参数:

$ state(bool) - 严格状态标志

返回类型:

空虚

  • $ statebool) - 严格状态标志

Return type:  void
Enables/disables strict type comparison in tests.

active([$state = TRUE])

参数:

$ state(bool) - 是否启用测试

返回类型:

void

  • $ statebool) - 是否启用测试

Return type:  void
启用/禁用单元测试。

result([$results = array()])

参数:

$ results(array) - 测试结果列表

返回:

原始结果数据数组

返回类型:

排列

  • $ resultsarray) - 测试结果列表

返回:原始结果数据的数组
Return type:  array
返回原始测试结果数据。

set_template($template)

参数:

$ template(string) - 测试结果模板

返回类型:

void

  • $ templatestring) - 测试结果模板

Return type:  void
设置用于显示测试结果的模板。
Previous article: Next article: