内容

名称

Test2 - 编写所有协同工作的测试工具的框架。

说明

Test2 是通过分叉 Test::Builder、对其进行彻底重构、添加许多新功能和能力而产生的一个新的测试框架。

有什么新内容?

更容易测试新的测试工具。

从一开始,Test2 就内置了自省能力。使用 Test::Builder,在最理想的情况下也很难捕获测试工具输出以进行验证。Test2 通过 Test2::API::intercept() 使其变得容易。

更好的诊断能力。

Test2 使用 Test2::API::Context 对象来跟踪文件名、行号和工具详细信息。此对象极大地简化了跟踪错误报告位置的过程。

事件驱动。

基于 Test2 的工具会生成事件,这些事件会通过处理系统,然后由格式化程序输出。此事件系统允许提供丰富的插件和扩展支持。

更完整的 API。

Test::Builder 仅提供少数方法来生成 TAP 行。Test2 清点人们使用 Test::Builder 所需的所有内容,这些内容需要对其进行破解。Test2 为几乎所有以前人们没有的所需功能制作了公共 API 函数。

支持 TAP 以外的输出。

Test::Builder 假设所有内容最终都会成为 TAP。Test2 不会做出这样的假设。Test2 提供了指定备用和自定义格式化程序的方法。

子测试实现更加合理。

Test::Builder 的子测试实现是公认的疯狂。Test2 使用堆叠事件中心系统,极大地改进了子测试的实现方式。

支持线程/分叉。

可以使用 Test2::IPC 打开 Test2 对分叉和线程的支持。打开后,线程和分叉将正常运行,并按预期工作。

开始

如果您有兴趣使用新工具编写测试,那么您应该看看 Test2::SuiteTest2::Suite 是一个单独的 cpan 发行版,其中包含许多在 Test2 上实现的工具。

如果您有兴趣编写新工具,您应该先了解 Test2::API

命名空间布局

此内容描述 Test2 生态系统的命名空间布局。此处列出的并非所有命名空间都是 Test2 发行版的一部分,有些是在 Test2::Suite 中实现的。

Test2::Tools:

此命名空间用于工具集。此命名空间中的模块应导出诸如 ok()is() 之类的工具。为 Test2 编写的大多数内容都应放在这里。此命名空间中的模块不得导出来自其他工具的子例程。如果您想这样做,请参阅 "Test2::Bundle::" 命名空间。

Test2::Plugin:

此命名空间用于插件。插件是更改或增强 Test2 行为的模块。插件的一个示例是一个模块,它将编码全局设置为 utf8。另一个示例是一个模块,它在第一个测试失败后导致退出事件。

Test2::Bundle:

此命名空间用于工具和插件包。加载其中一个可能会加载多个工具和插件。此命名空间中的模块不应直接实现工具。通常,此命名空间中的模块应加载工具和插件,然后将内容重新导出到使用者命名空间。

Test2::Require:

此命名空间用于模块,当条件不允许运行时,这些模块会导致跳过测试。示例包括在较旧的 perl 上或在未安装非必需模块时跳过测试的模块。

Test2::Formatter:

格式化程序位于此命名空间下。 Test2::Formatter::TAP 是当前唯一的格式化程序。第三方发行版可以在此命名空间下创建新的格式化程序,这是可以接受的。

Test2::Event:

事件位于此命名空间下。第三方发行版在此命名空间中添加新的事件类型被认为是可以接受的。

Test2::Hub:

Hub 子类(以及一些 hub 实用程序对象)位于此命名空间下。第三方发行版在此命名空间中添加新的 hub 子类完全合理。

Test2::IPC:

IPC 子系统位于此命名空间中。除了 IPC 驱动程序外,没有太多充分的理由向此命名空间添加任何内容。

Test2::IPC::Driver:

IPC 驱动程序位于此命名空间中。创建新的 IPC 驱动程序并将其放入此命名空间中是可以的。

Test2::Util:

此命名空间用于测试工具使用的通用实用程序。在向此命名空间添加新模块时请周到考虑。

Test2::API:

这是用于 Test2 API 和相关包的。

Test2:

Test2:: 命名空间旨在用于扩展和框架。工具、插件等不应直接进入此命名空间。但是,用于构建工具和插件的扩展可以放在这里。

简而言之:如果模块导出任何应由测试脚本直接运行的内容,则可能不应该直接进入Test2::XXX

另请参阅

Test2::API - 主要 API 函数。

Test2::API::Context - 上下文对象的详细文档。

Test2::IPC - 用于线程/fork 支持的 IPC 系统。

Test2::Formatter - 格式化程序(如 TAP)位于此处。

Test2::Event - 事件位于此名称空间中。

Test2::Hub - 所有事件最终都会通过一个中心进行处理。自定义中心是实现intercept()run_subtest()的方式。

联系我们

许多 Test2 开发人员和用户潜伏在 irc://irc.perl.org/#perl-qairc://irc.perl.org/#toolchain 上。我们还有一个 Slack 团队,任何拥有@cpan.org电子邮件地址的人都可以加入 https://perl-test2.slack.com/ 如果您没有@cpan.org电子邮件,您可以通过向 Chad Granum <[email protected]> 发送电子邮件来请求 Slack 邀请。

源代码

Test2 的源代码存储库可以在http://github.com/Test-More/test-more/中找到。

维护人员

Chad Granum <[email protected]>

作者

Chad Granum <[email protected]>

版权

版权所有 2020 Chad Granum <[email protected]>。

本程序是免费软件;您可以在与 Perl 自身相同的条款下重新分发或修改它。

请参阅https://dev.perl5.cn/licenses/