2222- 支持 actor alias 到 actorId/playerId 的映射。
2323- 支持时间轴按 ` atMs ` 驱动技能输入与等待。
2424- 输入模型支持 actor、target、position、direction、phase、slot。
25+ - ` setupActions ` 已接入测试工程内命令执行器,支持第一阶段环境准备命令:` spawn_actor ` 、` set_attr ` 、` move_to ` 、` add_buff ` 、` remove_buff ` 、` wait ` / ` tick ` 。
2526- trace exporter 会输出 scenario 相关字段,便于后续报告工具读取。
26- - assertion 支持 trace/state/context 三类断言。
27+ - assertion 支持 trace/state/context 三类断言,并支持基础 buff 状态断言 。
2728- ` AbilityKit.Game.UnitTests.csproj ` 已通过编译验证。
2829
2930## 3. 推荐测试文件组织
@@ -40,6 +41,7 @@ Unity/Packages/com.abilitykit.demo.moba.view.runtime/Runtime/Game/Test/
4041 UnitTest/
4142 MobaAcceptanceModels.cs
4243 MobaAcceptanceRunner.cs
44+ MobaAcceptanceSetupActionExecutor.cs
4345 MobaAcceptanceExpectationAssert.cs
4446 MobaAcceptanceTraceExporter.cs
4547 MobaSkillConfigTestHarness.cs
@@ -118,32 +120,47 @@ Unity/Packages/com.abilitykit.demo.moba.view.runtime/Runtime/Game/Test/
118120
119121## 6. SetupActions 约定
120122
121- ` setupActions ` 用于进入游戏后、timeline 执行前做一次性准备。
123+ ` setupActions ` 用于进入游戏后、timeline 执行前做一次性准备。第一阶段命令只放在测试工程内执行:runner 负责识别 setup action, ` MobaAcceptanceSetupActionExecutor ` 负责分发命令,实际运行时变更继续委托 ` MobaSkillConfigTestHarness ` 与正式 runtime service。
122124
123- 当前建议先保持轻量,主要用于 :
125+ 当前支持命令 :
124126
125- - 等待若干 tick/ms。
126- - 未来扩展:加 buff、改属性、移动 actor、生成召唤物、设置 CD、设置资源。
127+ | action | 语义 | 常用字段 |
128+ | ---| ---| ---|
129+ | ` wait ` / ` tick ` | 推进测试世界时间 | ` durationMs ` |
130+ | ` spawn_actor ` | 生成测试场景 actor / 召唤物 / 特殊实体,并注册 alias | ` alias ` 、` kind ` 、` teamId ` 、` heroId ` 、` attributeTemplateId ` 、` unitSubType ` 、` mainType ` 、` sourceAlias ` 、` sourceKind ` 、` position ` |
131+ | ` set_attr ` | 修改 actor 属性 | ` actorAlias ` 、` actorId ` 、` targetActorId ` 、` property ` 、` value ` / ` intValue ` |
132+ | ` move_to ` | 移动 actor 到指定位置 | ` actorAlias ` 、` actorId ` 、` targetActorId ` 、` position ` |
133+ | ` add_buff ` | 对 actor 应用 buff | ` targetAlias ` 、` actorAlias ` 、` sourceAlias ` 、` buffId ` 、` durationOverrideMs ` |
134+ | ` remove_buff ` | 从 actor 移除 buff | ` targetAlias ` 、` actorAlias ` 、` sourceAlias ` 、` buffId ` 、` removeAll ` |
127135
128136示例:
129137
130138``` json
131139{
132140 "scenario" : {
133141 "setupActions" : [
134- { "action" : " wait" , "durationMs" : 100 }
142+ { "action" : " wait" , "durationMs" : 100 },
143+ { "action" : " move_to" , "actorAlias" : " target" , "position" : { "x" : 4 , "y" : 0 , "z" : 0 } },
144+ { "action" : " set_attr" , "actorAlias" : " target" , "property" : " hp" , "value" : 1000 },
145+ { "action" : " add_buff" , "targetAlias" : " caster" , "sourceAlias" : " caster" , "buffId" : 1 , "durationOverrideMs" : 5000 },
146+ {
147+ "action" : " spawn_actor" ,
148+ "alias" : " summon_1" ,
149+ "teamId" : 1 ,
150+ "heroId" : 1 ,
151+ "attributeTemplateId" : 1001 ,
152+ "unitSubType" : 2 ,
153+ "mainType" : 1 ,
154+ "sourceAlias" : " caster" ,
155+ "sourceKind" : " Summon" ,
156+ "position" : { "x" : 2 , "y" : 0 , "z" : 3 }
157+ }
135158 ]
136159 }
137160}
138161```
139162
140- 后续建议把 setup action 扩展为明确命令集,而不是直接暴露 service 细节,例如:
141-
142- ``` json
143- { "action" : " set_attr" , "actor" : " target" , "property" : " hp" , "value" : 1000 }
144- { "action" : " add_buff" , "actor" : " caster" , "buffId" : 2001001 }
145- { "action" : " move_to" , "actor" : " target" , "position" : { "x" : 4 , "y" : 0 , "z" : 0 } }
146- ```
163+ 设计边界:setup action 是验收测试 DSL,不是生产玩法脚本。不要在 JSON 中暴露 service/method 细节,也不要在 runner 中直接堆业务分支;新增命令应优先扩展测试工程内 executor/harness。
147164
148165## 7. Timeline 约定
149166
@@ -275,6 +292,8 @@ trace 断言用于验证技能配置链路是否执行到了关键节点。
275292| ` maxHp ` | 最大生命值 |
276293| ` maxMana ` | 最大法力值 |
277294| ` teamId ` | 队伍 ID |
295+ | ` buff ` / ` hasBuff ` | 是否拥有指定 buff,使用 ` expectedInt ` 或 ` expectedValue ` 表示 buffId,使用 ` expectedBool ` 表示期望是否存在 |
296+ | ` buffCount ` | 指定 buff 数量,使用 ` expectedInt ` 或 ` expectedValue ` 表示 buffId;不传 buffId 时统计全部 active buff |
278297| ` position ` / ` transform.position ` | actor 当前位置 |
279298
280299当前支持 comparator:
@@ -370,7 +389,7 @@ trace 断言用于验证技能配置链路是否执行到了关键节点。
370389### P0:补齐可用性
371390
372391- 增加一到两个真实 scenario JSON 样例。
373- - 给 ` setupActions ` 增加 ` set_attr ` 、` add_buff ` 、` move_to ` 。
392+ - ` setupActions ` 第一阶段命令已落地: ` spawn_actor ` 、 ` set_attr ` 、` move_to ` 、 ` add_buff ` 、` remove_buff ` 、 ` wait ` / ` tick ` 。
374393- trace summary 中增加失败时的 nearest records 辅助定位。
375394- runner 输出更明确的 alias、actorId、timeline 当前帧日志。
376395
@@ -450,8 +469,9 @@ Web 分析模型建议长期保持以下关联字段稳定:
450469| 文件 | 职责 |
451470| ---| ---|
452471| ` MobaAcceptanceModels.cs ` | JSON DTO / scenario DSL 数据结构 |
453- | ` MobaSkillConfigTestHarness.cs ` | headless world 创建、actor/player alias、输入提交 |
472+ | ` MobaSkillConfigTestHarness.cs ` | headless world 创建、actor/player alias、输入提交、测试环境命令底层辅助 API |
454473| ` MobaAcceptanceRunner.cs ` | legacy/scenario 路由、setup/timeline 执行 |
474+ | ` MobaAcceptanceSetupActionExecutor.cs ` | 测试工程内 setup action 命令分发器,承载第一阶段环境准备命令 |
455475| ` MobaAcceptanceExpectationAssert.cs ` | trace/state/context 断言 |
456476| ` MobaAcceptanceTraceExporter.cs ` | trace 与 summary artifact 导出 |
457477| ` GatewaySkillAcceptanceArtifacts.cs ` | Web 后台只读 artifact 扫描、case 读取、run-plan 边界描述,包含路径约束、结构化错误与常量化文件元数据 |
0 commit comments