基于属性的测试的PHP库。与PHPUnit集成。

1.0.0-rc2 2024-03-08 15:12 UTC

README

CI Static analysis Documentation Status License: MIT

Eris 是将 QuickCheck 和基于属性的测试工具移植到PHP和PHPUnit生态系统的一个项目。

在基于属性的测试中,定义了系统必须遵守的几个属性,并尝试向它发送大量生成的输入以尝试破坏这些属性。

兼容性

  • PHP 7.4, 8.0, 8.1, 8.2
  • PHPUnit 8.x, 9.x

安装

您可以通过在终端运行以下命令通过 Composer 安装Eris:

composer require --dev giorgiosironi/eris

您可以使用以下命令运行一些Eris示例测试:vendor/bin/phpunit vendor/giorgiosironi/eris/examples

这是一个 空样本项目,其中安装了Eris。

请注意,项目处于alpha阶段,API可能在任何时候发生变化。

PHPUnit中的示例用法

此测试尝试验证从0到1000的自然数都小于42。这是一个失败的测试,旨在向您展示错误信息的示例。

<?php
use Eris\Generators;

class ReadmeTest extends \PHPUnit\Framework\TestCase
{
    use \Eris\TestTrait;

    public function testNaturalNumbersMagnitude()
    {
        $this->forAll(
            Generators::choose(0, 1000)
        )
            ->then(function($number) {
                $this->assertTrue(
                    $number < 42,
                    "$number is not less than 42 apparently"
                );
            });
    }
}

Eris从所需的域(此处为0到1000的整数)生成样本元素,并验证每个元素的属性,在第一个失败时停止。

[10:34:32][giorgio@Bipbip:~/code/eris]$ vendor/bin/phpunit examples/ReadmeTest.php
PHPUnit 4.3.5 by Sebastian Bergmann.

Configuration read from /home/giorgio/code/eris/phpunit.xml

F

Time: 234 ms, Memory: 3.25Mb

There was 1 failure:

1) ReadmeTest::testNaturalNumbersMagnitude
42 is not less than 42 apparently
Failed asserting that false is true.

/home/giorgio/code/eris/examples/ReadmeTest.php:15
/home/giorgio/code/eris/src/Eris/Quantifier/Evaluation.php:48
/home/giorgio/code/eris/src/Eris/Quantifier/RoundRobinShrinking.php:45
/home/giorgio/code/eris/src/Eris/Quantifier/ForAll.php:69
/home/giorgio/code/eris/src/Eris/Quantifier/Evaluation.php:50
/home/giorgio/code/eris/src/Eris/Quantifier/ForAll.php:71
/home/giorgio/code/eris/src/Eris/Quantifier/ForAll.php:87
/home/giorgio/code/eris/examples/ReadmeTest.php:16
/home/giorgio/code/eris/examples/ReadmeTest.php:16

FAILURES!
Tests: 1, Assertions: 826, Failures: 1.

Eris还尝试在失败后缩小输入,给您提供最简单的仍失败的测试输入。在这个例子中,原始输入可能像 562 这样,但Eris尝试使其更小,直到测试再次变为绿色。仍然失败的测试的最小值将显示给您。

文档

在ReadTheDocs上,您可以找到 Eris项目的参考文档

更新日志

查看 更新日志文件 以了解最新功能。

支持和贡献

请随时在 GitHub项目 上打开问题以获取支持和功能请求。

欢迎提交拉取请求。对于任何超过几行的内容,建议首先打开一个问题,以获得对预期解决方案的反馈以及它是否与代码库的其余部分很好地集成。

如果您向Eris贡献了提交,您将在 贡献者 文件中获得认可(除非您不想。)