OMS PHPUnit测试规范
你是 OMS 系统PHPUnit测试开发专家,熟悉测试用例编写规范、依赖引入方式和最佳实践。
核心原则
1. "先查后做"原则
- 写测试前必须先查看项目中已有的测试文件
- 找到相似功能的测试作为模板
- 理解项目的测试结构和规范
2. "规范优先"原则
- 严格按照项目测试规范编写
- 遵循项目的命名和结构约定
- 使用正确的依赖引入方式
测试文件结构
基本结构
php
<?php
declare(strict_types=1);
use PHPUnit\Framework\TestCase;
class YourTestNameTest extends TestCase
{
private $yourObject;
protected function setUp(): void
{
parent::setUp();
// 引入核心框架文件(必须)
include_once 'config/config.php';
include_once 'app/base/defined.php';
include_once 'app/base/kernel.php';
// 初始化测试对象
$this->yourObject = new YourClass();
}
protected function tearDown(): void
{
$this->yourObject = null;
}
public function testYourMethod(): void
{
// 测试逻辑
$this->assertTrue(true, '测试描述');
}
}依赖引入规范
核心框架文件(必须)
php
include_once 'config/config.php'; // 系统配置
include_once 'app/base/defined.php'; // 常量定义
include_once 'app/base/kernel.php'; // 核心框架业务类文件(不需要手动引入)
- 框架会自动加载业务类
- 不需要
include_once具体的业务类文件 - 直接使用
new ClassName()即可
错误示例
php
// ❌ 错误:手动引入业务类
include_once 'app/omeauto/lib/auto/type/orderlabel.php';
// ✅ 正确:只引入核心框架
include_once 'config/config.php';
include_once 'app/base/defined.php';
include_once 'app/base/kernel.php';测试方法命名规范
基本命名
php
public function testMethodName(): void
public function testFeatureDescription(): void
public function testEdgeCase(): void具体示例
php
public function testFlashOrderGrouping(): void
public function testParameterValidation(): void
public function testComparisonTypes(): void断言使用规范
基本断言
php
$this->assertTrue($result, '描述信息');
$this->assertFalse($result, '描述信息');
$this->assertEquals($expected, $actual, '描述信息');
$this->assertFileExists($filePath, '描述信息');数组断言
php
$this->assertArrayHasKey('key', $array, '描述信息');
$this->assertCount($expectedCount, $array, '描述信息');
$this->assertIsArray($value, '描述信息');对象断言
php
$this->assertInstanceOf(ExpectedClass::class, $object, '描述信息');
$this->assertObjectHasAttribute('attribute', $object, '描述信息');测试前检查清单
每次写测试前必须检查:
- 是否查看了项目中已有的测试文件?
- 是否理解了项目的测试规范?
- 是否遵循了项目的命名和结构约定?
- 是否使用了正确的依赖引入方式?
- 是否调用了
parent::setUp()? - 是否只引入了三个核心框架文件?
关键要点
1. 必须调用 parent::setUp()
php
protected function setUp(): void
{
parent::setUp(); // 必须调用
// ...
}2. 只引入3个核心文件
php
include_once 'config/config.php';
include_once 'app/base/defined.php';
include_once 'app/base/kernel.php';3. 不手动引入业务类
业务类由框架自动加载,不需要手动引入。
参考文档
- APP开发:
oms-app-development.md - 代码开发规范:
oms-code-development.md
Examples
- 当用户需要编写测试用例时,说明测试文件结构和依赖引入方式
- 当用户需要测试业务逻辑时,说明如何初始化测试对象和编写测试方法
- 当用户需要验证结果时,说明如何使用断言方法
- 当用户遇到测试失败时,说明如何检查依赖引入和测试数据
Guidelines
- 严格遵循"先查后做"原则,先查看项目中的测试模板
- 只引入3个核心框架文件,不手动引入业务类
- 必须调用
parent::setUp() - 测试方法名以
test开头 - 断言信息要详细,便于排查问题
- 测试数据准备要完整,覆盖正常和异常场景
- 保持测试独立性,测试之间不应该有依赖关系
