单元测试(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)
运行测试
- 在资产面板(Assets Panel)右键 Test 脚本
- 选择 “运行测试(Run tests)”
结果会显示在:
- 资产面板脚本条目下(通过/失败用例)
- 脚本编辑器中的通过/失败高亮
