sergey-bel/phpinvariant

PHP 属性测试框架

6.3 2023-09-16 10:41 UTC

This package is auto-updated.

Last update: 2024-09-16 13:14:04 UTC


README

build

PhpInvariant 是一个针对 PHP 的属性测试框架
它会在自定义的随机数据上运行你的代码,并检查预定义的属性(类似于 QuickCheck

安装

推荐通过 Composer 安装 PhpInvariant

composer require --dev sergey-bel/phpinvariant

快速开始

  1. 创建一个名为 invariants 的文件夹
  2. 在此文件夹中创建 ...Invariant
    1. 类必须继承 BaseInvariant
    2. 每个名为 'check...' 的公共方法将被执行
  3. 运行命令 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 - 运行测试