1. 准备测试环境
在Ubuntu系统中,确保已安装PHP、Composer及PHPUnit(测试核心工具)。PHPUnit需作为开发依赖安装,通过Composer添加:
composer require --dev phpunit/phpunit
安装完成后,PHPUnit的可执行文件会位于项目根目录的vendor/bin/下(如vendor/bin/phpunit)。
2. 配置PHPUnit
创建phpunit.xml配置文件(项目根目录),定义测试套件的路径及自动加载规则。示例如下:
"1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true">
<testsuites>
<testsuite name="Project Test Suite">
<directory>./testsdirectory>
testsuite>
testsuites>
phpunit>
此配置会加载项目自动加载文件(vendor/autoload.php),并指定tests/目录为测试文件目录。
3. 编写测试用例
在tests/目录下创建测试文件(如StringUtilsTest.php),命名需遵循规范。示例测试类(测试字符串工具类):
namespace VendorName\PackageName\Tests; // 替换为你的包命名空间
use PHPUnit\Framework\TestCase;
use VendorName\PackageName\StringUtils; // 替换为你的类路径
class StringUtilsTest extends TestCase {
public function testCapitalize(): void {
$this->assertEquals('Hello World', StringUtils::capitalize('hello world'));
$this->assertEquals('Foo Bar', StringUtils::capitalize('foo bar'));
}
public function testSlugify(): void {
$this->assertEquals('hello-world', StringUtils::slugify('Hello World!'));
$this->assertEquals('foo-bar', StringUtils::slugify('Foo Bar@'));
}
}
测试方法需以test_开头(PHPUnit 9+支持void返回类型),使用$this->assertEquals()等断言验证结果。
4. 运行测试
通过Composer运行PHPUnit测试,命令如下:
vendor/bin/phpunit
若在composer.json中配置了测试脚本(如"test": "phpunit"),可直接使用:
composer test
运行后,PHPUnit会自动执行tests/目录下的所有测试用例,并输出结果(如通过/失败数量、错误详情)。
5. 集成测试到开发流程(可选)
为确保每次代码变更后自动运行测试,可将测试脚本添加到composer.json的scripts部分:
{
"scripts": {
"post-update-cmd": [
"phpunit" // 更新依赖后自动运行测试
],
"test": "phpunit" // 自定义测试命令
}
}
配置后,执行composer update时会自动触发测试,或通过composer test手动运行。
注意事项
- 测试文件需放在
tests/目录(或phpunit.xml中指定的目录); - 确保
composer.json中的autoload配置正确(如psr-4自动加载),避免测试时类无法加载; - 若使用VSCode,可安装PHP Debug插件,配置
launch.json实现测试调试。
以上就是关于“ubuntu composer如何测试代码”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm