首先安装兼容版本的 PHPUnit,然后创建测试目录并配置 phpunit.xml,接着编写测试用例并通过命令行运行,最后注意隔离测试环境与生产数据。

phpCMS 是一个基于 PHP 的内容管理系统,本身并没有内置完善的单元测试框架。要为 phpcms 编写和运行单元测试,通常需要借助外部的测试工具,比如 PHPUnit。下面介绍如何为 phpcms 项目搭建和使用单元测试。
1. 安装 PHPUnit
phpcms 多数版本基于较早的 PHP 版本开发,因此需选择兼容的 PHPUnit 版本(如 PHPUnit 5 或 6)。
推荐通过 Composer 安装:- 在项目根目录执行:composer require --dev phpunit/phpunit ^5.7
- 安装完成后可通过 ./vendor/bin/phpunit --version 验证是否成功
2. 创建测试目录结构
建议在项目中建立标准的测试目录,便于管理:
- /tests/:存放所有测试用例
- /tests/bootstrap.php:测试启动文件,用于加载 autoloader 和初始化环境
- 例如:/tests/model/ContentTest.php 测试某个模型逻辑
bootstrap.php 示例内容:
立即学习“PHP免费学习笔记(深入)”;
3. 编写测试用例
以测试一个自定义模型为例,假设你有一个处理文章内容的模型类 content_model。
创建测试文件:/tests/model/ContentTest.php
contentModel = new content();
}
public function testGetContentById()
{
$data = $this->contentModel->get_one(['id' => 1]);
$this->assertIsArray($data);
if ($data) {
$this->assertArrayHasKey('id', $data);
$this->assertEquals(1, $data['id']);
}
}
public function testAddContent()
{
$newData = [
'title' => '测试标题',
'content' => '测试内容',
'addtime' => TIME,
];
$id = $this->contentModel->insert($newData);
$this->assertGreaterThan(0, $id);
// 清理测试数据
$this->contentModel->delete(['id' => $id]);
}
}
?>
4. 配置 phpunit.xml
在项目根目录创建 phpunit.xml 文件,配置自动加载和测试路径:
tests/
5. 运行单元测试
在命令行中执行:
- ./vendor/bin/phpunit:运行所有测试
- ./vendor/bin/phpunit tests/model/ContentTest.php:运行指定测试文件
观察输出结果,绿色表示通过,红色表示失败或异常。
6. 注意事项
- phpcms 框架早期版本依赖全局函数和静态调用,不利于测试,尽量封装或使用模拟技术
- 避免在测试中影响生产数据库,建议使用独立的测试数据库,并在测试前后清空数据
- 对于模块化开发的 phpcms 插件或新功能,推荐从一开始就编写测试











