当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

单元测试 - 一般

优质
小牛编辑
118浏览
2023-12-01

FuelPHP 以自动测试的想法建成,并且基于 PHPUnit 测试框架来包含测试和测试类别。

单元测试是什幺?

单元测试是被写来确保程式码单元(通常是一个函式或方法)是否有执行它原设计行为的自动测试。 这些测试也帮助开发者确保他们对系统所作的任何变更,不会破坏原有运作中的任何东西。 单元测试也是测试驱动开发(TDD)学问的关键原动力。

PHPUnit

你将需要本地安装的 PHPUnit,如果你想要传送给 FuelPHP 运行测试,并且想要使用 Oil 来运行你的测试的话。 如果你还没安装好 PHPUnit,请参考 PHPUnit 安装文件:http://www.phpunit.de/manual/current/en/installation.html

如果你对使用 FuelPHP 运行单元测试不感兴趣,你就没有必要安装 PHPUnit。

执行单元测试

FuelPHP 包含的命令列实用工具已经被配置来运行你的单元测试。 你可以从命令列使用 Oil 命令列实用工具,来运行所有在你 FuelPHP 专案中的测试:

$ php oil test

Tests Running...This may take a few moments.
PHPUnit 3.6.10 by Sebastian Bergmann.

Configuration read from /home/user/sites/example/fuel/core/phpunit.xml

...............................................................  63 / 251 ( 25%)
............................................................... 126 / 251 ( 50%)
............................................................... 189 / 251 ( 75%)
..............................................................

Time: 6 seconds, Memory: 22.25Mb

OK (251 tests, 206 assertions)

建立单元测试

在 FuelPHP,测试位于 fuel/app/tests 目录及其子目录。 如果此目录不存在,前去建立它。 依照惯例,测试档案被放在之于 fuel/app/tests 的子路径会与被测试类别之于 fuel/app/classes 的相同,所以一个对 fuel/app/classes/model/login.php 类别的测试会在 fuel/app/tests/model/login.php。

测试是扩充 TestCase 的类别。 TestCase 是 FuelPHP 对 PHPUnit 的 PHPUnit_Framework_TestCase 类别的扩充,这样你将可以在你的测试中使用所有常见的 PHPUnit 主张(assertion)和方法。 依照惯例,测试类别在它们要测试的类别之后被命名,以 Test_ 前缀,所以一个测试 Model_Login 的类别会被命名为 Test_Model_Login。

class Test_Model_Login extends TestCase
{
	public function test_foo()
	{
	}
}

你可以在 PHPUnit 文件找到更进一步关于撰写测试的资讯:http://www.phpunit.de/manual/current/en/writing-tests-for-phpunit.html

测试群组

如果你在开发阶段只想运行测试的子群集,你可以使用测试群组。 运行 php oil test 带着 --group= 命令开关。

$ php oil test --group=App

此命令将只运行 'App' 群组的测试。 你可以对文件区块的 @group 属性指派一个测试类别为一个或更多群组。

/**
 * @group App
 * @group Login
 */
class Test_Model_Login extends TestCase
{
	public function test_foo()
	{
	}
}

进阶配置

如果你需要自订 phpunit.xml 档案的内容,複製 fuel/core/phpunit.xml 到 fuel/app 目录中。 FuelPHP 将识别你的新配置档案代替在 fuel/core 的旧档案。

为模组单元测试

如果你正在用 FuelPHP 开发大型系统,建议作法是在模组开发。 但因为模组路径试可配置的,模组路径必须被配置在 phpunit.xml 让测试可被识别及运行。 例如,如果你正在 fuel/app/modules 开发模组,你会想要添加此测试套件到你的 phpunit 配置:

<testsuite name="modules">
    <directory suffix=".php">../app/modules/*/tests</directory>
</testsuite>

在一个改名的 fuel/ 目录中测试

如果你已经把你的 fuel 目录改为其他名称,设定在 phpunit.xml 档案中的系统变数(文件根目录、核心路径等。) 虽然在你根目录的 Oil 指令码变更路径将有助于其他 Oil 命令,PHPUnit 载入它自己的环境,因此一个改名的 fuel 目录将破坏测试。 要修正这个问题,编辑在你的 app/ 目录中的 phpunit.xml 副本,并更新伺服器变数路径来反映你的新档案结构。