TypeScript 测试平台提供了一个用于测试 TypeScript 编译器、语言服务和其他组件的基础设施。它实现了一个框架,用于定义、发现和执行测试,并提供了用于模拟文件系统、并行运行测试和生成测试结果基线文件的实用程序。
本文档解释了测试平台基础设施的架构和关键组件,重点介绍了测试的定义、发现和执行方式。
测试平台由几个主要组件组成,它们协同工作,为 TypeScript 提供了一个灵活的测试平台。
来源
IO 系统抽象了文件系统操作,为测试中使用的真实和虚拟文件系统操作提供了统一的接口。这种抽象允许测试在不同的环境和操作系统中一致地运行。
来源
IO 系统默认实现为基于 Node.js 的实现,与真实文件系统交互。该接口还支持虚拟文件系统 (VFS),用于需要使用隔离文件系统运行的测试。
测试平台使用一系列 runner 来组织和执行不同类型的测试。
来源
每种 runner 类型负责
主要的 runner 类型是
TypeScript 测试平台中的测试遵循从发现到结果报告的特定执行流程。
来源
执行流程始于加载测试配置,这些配置决定了使用哪些 runner 以及如何执行测试。一旦创建了 runner,它们就会发现并初始化测试。测试可以按顺序或并行执行,并在最后收集和报告结果。
测试平台支持并行测试执行以提高性能,尤其是在大型测试套件中。
来源
并行测试执行系统包括:
测试平台提供 TypeScript 编译器关键依赖项的模拟实现,以实现隔离测试。
来源
模拟实现包括:
ts.System 接口,带有虚拟文件系统这些模拟允许测试:
测试平台支持灵活的配置系统来控制测试的发现和执行方式。
| 配置选项 | 描述 | 默认 |
|---|---|---|
light | 以轻量级模式运行(断言较少) | false |
taskConfigsFolder | 任务配置文件所在文件夹 | - |
workerCount | 并行工作进程数量 | 1 |
stackTraceLimit | 堆栈跟踪限制 | - |
test / runners | 要使用的特定测试 runner | 所有 runner |
runUnitTests | 是否运行单元测试 | true |
skipSysTests | 跳过系统测试 | false |
noColors | 禁用彩色输出 | false |
timeout | 测试的全局超时 | - |
keepFailed | 在测试列表中保留失败的测试 | false |
shardId / shards | 用于测试分片 | 1/1 |
来源
配置可以通过以下方式指定:
mytest.config 文件(优先级最高)test.config 文件测试平台包含一个复杂的系统,用于生成错误基线,用于验证编译器错误是否保持一致。
来源
错误基线系统
这种方法允许 TypeScript 保持错误消息的向后兼容性,并确保错误报告的更改是故意的。
测试平台提供在测试中使用 TypeScript 编译器的实用程序。
来源
编译器实用程序包括:
这些实用程序简化了对编译器功能编写测试的过程,并确保了测试行为的一致性。
测试平台包含一个虚拟文件系统 (VFS),允许测试在隔离的环境中运行。
来源
虚拟文件系统
这个虚拟文件系统是测试平台能够在不同环境中一致运行测试的关键。
TypeScript 测试平台提供了一个强大而灵活的框架,用于测试 TypeScript 编译器和相关组件。其架构支持从单元测试到端到端编译器测试的各种测试类型,并具备并行执行、基线比较和隔离测试环境等功能。
理解测试平台对于为 TypeScript 做贡献至关重要,因为它使开发人员能够编写有效的测试并理解现有测试的工作原理。