innmind/black-box

测试库

5.7.0 2024-07-21 16:09 UTC

README

codecov Build Status Type Coverage

BlackBox 是一个基于属性的测试框架和测试执行器。

基于属性的测试是一种通过使用给定类型的多个值来测试代码片段(即属性)是否总是以相同方式行为(也称为属性)的方法。

对这个方法的常见介绍是具有 3 个属性的 add 函数

  • 它是交换律的
  • 它是结合律的
  • 它是一个恒等函数

要使用 BlackBox 证明这一点,你可以这样做

use Innmind\BlackBox\{
    Application,
    Set,
    Runner\Assert,
};

Application::new([])
    ->tryToProve(static function() {
        yield proof(
            'add is commutative',
            given(
                Set\Integers::any(),
                Set\Integers::any(),
            ),
            static fn(Assert $assert, int $a, int $b) => $assert->same(
                add($a, $b),
                add($b, $a),
            ),
        );
        yield proof(
            'add is associative',
            given(
                Set\Integers::any(),
                Set\Integers::any(),
                Set\Integers::any(),
            ),
            static fn(Assert $assert, int $a, int $b, int $c) => $assert->same(
                add(add($a, $b), $c),
                add($a, add($b, $c)),
            ),
        );
        yield proof(
            'add is an identity function',
            given(Set\Integers::any()),
            static fn(Assert $assert, int $a) => $assert->same(
                $a,
                add($a, 0),
            ),
        );
    })
    ->exit();

默认情况下,BlackBox将为每个证明生成 100 个场景。

注意 BlackBox 使用术语 证明 来强调你测试的是行为而不是特定场景,但这 NOT 形式证明

安装

composer require --dev innmind/black-box

文档

完整文档可以在这里找到。