ilmiont/trainline

Trainline 是一个小巧的 PHP 测试框架,旨在快速创建最小单元测试。

2.1.1 2023-01-05 09:27 UTC

This package is auto-updated.

Last update: 2024-09-05 13:13:47 UTC


README

Trainline 是一个小巧的 PHP 测试框架。

入门

Trainline 需要 PHP ^8.0。

composer require --dev ilmiont/trainline

在您的工作目录中创建一个 trainline.json 文件

{
	"directory": "tests/",
	"namespace": "Tests"
}

现在,您可以通过运行 vendor/bin/trainline 来执行您的测试!

您可以使用 CLI 参数覆盖任何配置键: vendor/bin/trainline --directory tests/。 以这种方式覆盖时,必须为每个 CLI 参数提供一个值。

编写测试

测试单元 必须 实现 Trainline\Framework\UnitInterface 接口。 建议您的测试扩展 Trainline\Framework\Unit,它实现了 Trainline\Framework\UnitInterface

单元必须在没有任何参数的情况下可构造。 它还必须在您在配置中定义的目录和命名空间根中 PSR-4 自动加载。 Trainline 自动加载您工作目录中的 vendor/autoload.php 文件。

当扩展 Unit 时,您类中的所有未以 __ 前缀开头的方法都将作为测试用例执行。 测试用例不接收任何参数,并且不需要返回任何值。 测试用例将顺序执行。

任何没有抛出异常的测试用例都视为成功。

__init()__after()

您的单元的 __init() 方法将在每个测试用例之前被调用。

您的单元的 __after() 方法将在每个测试用例之后被调用。

__init()__after() 不接收任何参数,并且不需要返回任何值。

__tests()

您可以通过实现此方法来定义哪些单元的方法应作为测试用例执行。 它必须返回一个包含要执行的测试用例方法名的数组。

断言

Trainline\Assertions 命名空间中包含了一组基本的断言函数

  • equiv(mixed $a, mixed $b) : bool - 检查 $a == $b,如果不成立,则抛出 Trainline\Exceptions\AssertionException 实例;抛出的异常在转换为字符串时包含比较值的良好表示。
  • ident(mixed $a, mixed $b) : bool - 检查 $a === $b,如果不成立,则抛出 Trainline\Exceptions\AssertionException 实例;抛出的异常在转换为字符串时包含比较值的良好表示。
  • throws(callable $callback, string $expect=null) - 调用 $callback 并期望抛出一个 Throwable。 如果 $callback 执行而没有抛出异常,则抛出 Trainline\Exceptions\AssertionThrowsException。 当 $expect 给定时,$callback 抛出的 Throwable 必须满足 instanceof $expect;如果不成立,则抛出 Trainline\Exceptions\AssertionThrownException,当转换为字符串时,它将输出期望和接收到的 Throwable 类型的好看表示。 返回 \Throwable$callback 抛出。

报告

所有输出目前都作为格式化的 ANSI 文本输出到 stdout

ANSI 兼容性将自动检测。 您可以通过将 forceAnsi 配置键设置为 true 来强制 ANSI 输出。

遇到错误的测试用例将输出其名称和导致失败的 Throwable 的字符串表示。

在所有测试用例执行完成后,将输出一个包含测试运行统计信息的摘要。

API

Trainline 内部API目前未进行文档化。

欢迎您查看源代码以了解如何构建扩展。

©James Walker。遵循MIT许可证。