跳到主要内容

单元测试(Unit Testing)

Test 脚本(Test Scripts)允许你为 工具脚本(Util Scripts) 编写单元测试(Unit Tests),并直接在 Rive 编辑器中运行。

除了验证代码,测试还能为 AI Agent 提供更精确的行为约束,帮助生成更符合预期的代码。

创建测试脚本

创建新脚本,并在类型中选择 测试(Test)

测试脚本结构

Test 脚本暴露一个 setup(test: Tester) 函数。Tester 对象提供以下能力:

  • test.case(name, fn):定义单个测试用例
  • test.group(name, fn):组织测试分组(支持嵌套)
  • expect(value):创建断言对象

在用例中,expect 通过参数传入回调。

示例

-- Load the Util that you want to create tests for
local MyUtil = require('MyUtil')

function setup(test: Tester)
local case = test.case
local group = test.group

-- Create a single case with multiple tests
case('Addition', function(expect)
local result = MyUtil.add(2, 3)
expect(result).is(5)
expect(result).greaterThanOrEqual(5)
end)

-- Organize your tests with groups
group('Math', function()
case('Subtraction', function(expect)
local result = MyUtil.subtract(2, 3)
expect(result).is(-1)
end)

case('Multiplication', function(expect)
local result = MyUtil.multiply(2, 3)
expect(result).greaterThanOrEqual(6)
end)

group('Trigonometry', function()

case('Degrees to Radians', function(expect)
local result = MyUtil.deg2rad(180)
expect(result).is(math.pi)
end)
end)
end)
end

提示(Tip) 建议使用清晰的分组名与用例名,便于在结果面板中快速定位失败项。

匹配器(Matchers)

expect 返回带 matcher 的对象,常用示例:

expect(value).is(expected)
expect(value).greaterThan(number)
expect(value).greaterThanOrEqual(number)
expect(value).lessThan(number)
expect(value).lessThanOrEqual(number)

完整 matcher 列表可参考 Test API(官方待补链接)。

使用 never 取反

通过在 matcher 前链式调用 .never 来取反断言:

case('never examples', function(expect)
-- This passes because 2 + 2 is NOT 3
expect(2 + 2).never.is(3)

-- This passes because 4 is NOT >= 6
expect(4).never.greaterThanOrEqual(6)
end)

运行测试

  1. 在资产面板(Assets Panel)右键 Test 脚本
  2. 选择 “运行测试(Run tests)”

结果会显示在:

  • 资产面板脚本条目下(通过/失败用例)
  • 脚本编辑器中的通过/失败高亮

Problems panel