shockedplot7560/unit-test

该包最新版本(1.2.9)没有可用的许可信息。

为PocketMine-MP集成的测试框架


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) 来解析承诺。

每个测试类可以在服务器 onLoadonEnableonDisable 时执行代码。只需使用相应的类即可。

setUptearDown 分别在类测试运行之前和之后被调用,无论结果如何。

例如,测试请查看 tests/pmmpunit/suitetest/*/tests

TestPlayer使用

要在一个测试期间检索一个玩家,请调用 getPlayer()
要测试玩家的命令或行为,在执行操作之前创建您的承诺/监听器。在测试方法中返回承诺。