sergey-bel / phpinvariant
PHP 属性测试框架
6.3
2023-09-16 10:41 UTC
Requires
- nikic/php-parser: ^4.15
- phpunit/phpunit: ^9.5
- symfony/config: ^6.2
- symfony/console: ^6.0
- symfony/dependency-injection: ^6.0
- symfony/finder: ^6.0
- symfony/yaml: ^6.2
- webmozart/assert: ^1.11
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.6
- phpstan/phpstan: ^1.5
- symfony/var-dumper: ^6.0
README
PhpInvariant 是一个针对 PHP 的属性测试框架
它会在自定义的随机数据上运行你的代码,并检查预定义的属性(类似于 QuickCheck)
安装
推荐通过 Composer 安装 PhpInvariant
composer require --dev sergey-bel/phpinvariant
快速开始
- 创建一个名为
invariants
的文件夹 - 在此文件夹中创建
...Invariant
类- 类必须继承
BaseInvariant
- 每个名为 'check...' 的公共方法将被执行
- 类必须继承
- 运行命令
vendor/bin/phpinvariant run --path=invariants
查看 示例
示例
class IntegerInvariant extends BaseInvariant { // run check method 10 times #[FinishRuns(10)] public function checkInteger() { // $x is a random integer in [50, 100] $x = $this->provider->integer(50, 100)->get(); $this->assertTrue(is_integer($x)); // fail when $x=100 $this->assertLessOrEqual($x, 99); $this->assertGreaterOrEqual($x, 50); } }
提供者
提供者是生成随机数据的主类
此示例将生成长度在 5 到 10(含)之间的字母字符串
$this->provider ->string(5, 10) ->alphabetic() ->get();
完成条件
完成条件用于确定何时结束检查执行
完成条件通过方法属性指定
命令行选项
--path
指定包含检查类的目录
--config
指定配置文件的路径
--no-progress
不显示进度条
--quiet
不输出任何消息
--seed
指定随机种子
配置文件
PhpInvariant 使用 YAML 配置格式。所有命令行选项都在配置文件的 parameters
部分中受支持
示例
parameters: path: invariants no-progress: false
可以通过 --config
选项传入配置文件
vendor/bin/phpinvariant run --config=phpinvariant.yml
开发
git clone https://github.com/SergeyBel/phpinvariant.git
docker-compose up -d
使用 Makefile 命令
fix
- 运行代码格式修复器
static
- 运行静态分析器
test
- 运行测试