Skip to content

Repository files navigation

言试

言试(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.yxb

examplesbenchmarks是带独立锁文件的消费者包,用于验证公开包导入而不是相对源码导入。

已知限制

  • 套件为同步执行模型,不调度异步任务;
  • 快照格式是 JSON,不能表示 JSON 以外的运行时值;
  • Mock 记录会占用内存,长时间压力测试应使用独立测量工具;
  • HTTP Mock 不模拟 DNS、TLS、连接分段或真实网络时序;
  • 数据库回滚只隔离同一事务连接内的操作,外部副作用仍须由测试自行清理;
  • 仓储契约会调用重置(),只能用于隔离的测试仓储。

文档

项目采用MIT License

About

言试:现代、可组合的言序测试工具包

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors