shockedplot7560 / unit-test
为PocketMine-MP集成的测试框架
Requires
- php: ^8.1 || ^8.2
- pocketmine/callback-validator: ^1.0
- react/promise: ^3.0
- respect/stringifier: ^2.0
- sof3/await-generator: ^3.6
- webmozart/assert: ^1.11
Requires (Dev)
- friendsofphp/php-cs-fixer: *
- phpstan/phpstan: ^1.10
- pocketmine/pocketmine-mp: ^5.16
- dev-stable
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- 0.0.1-BETA4
- 0.0.1-BETA3
- 0.0.1-BETA2
- 0.0.1-BETA1
- dev-dependabot/composer/stable/phpstan/phpstan-1.10.64
- dev-dependabot/composer/stable/friendsofphp/php-cs-fixer-3.52.1
- dev-dependabot/github_actions/stable/docker/build-push-action-5.3.0
- dev-dependabot/composer/stable/pocketmine/pocketmine-mp-5.13.0
- dev-dependabot/composer/pocketmine/pocketmine-mp-5.11.2
- dev-dependabot/github_actions/stable/pmmp/setup-php-action-3.1.0
- dev-dependabot/github_actions/stable/docker/metadata-action-5.5.1
- dev-dependabot/github_actions/stable/actions/cache-4
- dev-functionnal-refactoring
This package is auto-updated.
Last update: 2024-09-06 08:38:50 UTC
README
仅适用于Unix(Linux,Mac)
此插件旨在使PocketMine运行时期间的集成和功能测试成为可能。
它可以用来正确测试由假玩家执行的命令的预期结果,事件交互和多线程支持。
测试异步运行,使用承诺来支持不同的系统。用于承诺的库是:ReactPHP/promise
警告
此插件不应在生产环境中使用,因为它将在测试完成后立即关闭服务器。
安装
强烈建议使用官方Docker镜像。
将测试挂载在 /data/plugin_data/PmmpUnit/tests/
,并将您的插件复制到 /plugins/
。
示例
docker run -it --rm \
-v /tests/pmmpunit/suitetest/normal/tests:/data/plugin_data/PmmpUnit/tests/ \
# -v /path/to/plugin:/plugins/ \
--name pmunit-test \
ghcr.io/shockedplot7560/pmmpunit/tests-runner:latest
注意
应很快提供简化GitHub工作流中集成测试执行的操作。
使用
测试从文件夹 plugin_data/PmmpUnit/tests/
获取,并在服务器启动时执行。
所有测试类都必须继承自 ShockedPlot7560\PmmpUnit\framework\TestCase
。
所有测试方法都必须以 test
为前缀,不能有任何参数,它必须返回一个 PromiseInterface<null>
。
如果代码是同步执行的并且不需要等待结果,请使用 resolve(null)
。对于异步代码,请使用 Deferred
,并使用 $deferred->resolve(null)
来解析承诺。
每个测试类可以在服务器 onLoad
、onEnable
或 onDisable
时执行代码。只需使用相应的类即可。
setUp
和 tearDown
分别在类测试运行之前和之后被调用,无论结果如何。
例如,测试请查看
tests/pmmpunit/suitetest/*/tests
TestPlayer使用
要在一个测试期间检索一个玩家,请调用 getPlayer()
。
要测试玩家的命令或行为,在执行操作之前创建您的承诺/监听器。在测试方法中返回承诺。