言试(yanxu-test)是言序 1.1.12+ 的稳定测试工具包。它在标准测试模块之上提供受资源预算约束的断言、数据驱动套件、夹具生命周期、Mock/Spy、快照、言访传输、数据库回滚测试与仓储 CRUD 契约。
测试工具通常应作为开发依赖:
[开发依赖]
言试 = { git = "https://github.com/yanxulang/yanxu-test.git", 修订 = "v1.0.0", 版 = "^1.0" }也可使用言包:
yanbao add test --package 言试 --version "^1.0" --rev v1.0.0 --dev引「包:言试」为 言试;
法 用户夹具():典 则
归 {「编号」:42,「姓名」:「子衿」};
终
法 清理用户(用户):空 则
归 空;
终
法 验证用户(上下文):空 则
定 用户:典 为 上下文.夹具(「用户」);
言试.相等(用户【「编号」】,42);
言试.应匹配(用户【「姓名」】,「^子」);
归 空;
终
言试.套件(「用户服务」)
.夹具(「用户」,用户夹具,清理用户)
.测试(「读取用户」,验证用户)
.运行();
- 普通、深层、近似、包含、正则、类型、谓词、空值和错误代码断言;
- 表格测试、参数化测试和结构化运行结果;
- 惰性夹具、前后钩子、失败聚合、逆序清理和严格资源上限;
- 深复制的 Mock/Spy 调用记录与可注入言时虚拟时钟;
- JSON 快照、受限临时目录和显式环境隔离视图;
- 不劫持全局网络的 HTTP Mock,以及正式
言访.自定义传输适配器; - 基于言库
完成后回滚选项的数据库测试事务; - 仓储协议、函数适配器和可复用 CRUD 契约验证。
言试不申请网络、监听、环境、进程或原生扩展权限。根包声明文件 = ["."],用于快照和临时目录 API;依赖权限不会传递给消费者,顶层测试项目仍须显式授权自己实际使用的路径。
HTTPMock和言访传输()只在内存中匹配请求,不发起真实网络访问。数据库测试事务只使用调用方传入的连接,不创建连接或申请数据库凭据。
- 最低言序:1.1.12;
- 言据:1.2.0,兼容
^1.2; - 言时、言访、言库及其稳定依赖:1.0.0,兼容
^1.0; - 纯言序实现,无原生扩展,支持 Linux、macOS 与 Windows。
完整矩阵见COMPATIBILITY.md。
言试错误使用YANSHI_TEST_*稳定代码。可用错误详情(错误)取得代码/消息/源代码/类别/位置/踪迹,或用应当抛错代码断言代码,不应依赖消息文字进行程序判断。
套件的尝试运行()不会因测试失败立即中止,而是返回通过、失败、跳过、逐项错误列和生命周期错误;运行()在结果不成功时抛YANSHI_TEST_SUITE。完整分类见docs/ERRORS.md。
yanxu 格 src/言试.yx
yanxu 查 src/言试.yx
yanxu 试 tests --并发 1 --json
yanxu 兼容 tests --json
yanxu 编 . --release -o /tmp/yanxu-test.yxbexamples与benchmarks是带独立锁文件的消费者包,用于验证公开包导入而不是相对源码导入。
- 套件为同步执行模型,不调度异步任务;
- 快照格式是 JSON,不能表示 JSON 以外的运行时值;
- Mock 记录会占用内存,长时间压力测试应使用独立测量工具;
- HTTP Mock 不模拟 DNS、TLS、连接分段或真实网络时序;
- 数据库回滚只隔离同一事务连接内的操作,外部副作用仍须由测试自行清理;
- 仓储契约会调用
重置(),只能用于隔离的测试仓储。
项目采用MIT License。