测试事件日志
基本信息
| 属性 | 值 |
|---|---|
| 事件类型目录 | com.gtnewhorizons.horizonqa.api.event |
| 类型总数 | 37(34 个事件记录 + TestEvent 标记接口 + EventLog 只读视图接口) |
| 状态快照目录 | com.gtnewhorizons.horizonqa.api.event.state(6 个类型) |
| 测试内获取方式 | helper.getRecorder().snapshot() |
| 开关 | -Dhorizonqa.events(默认 true) |
| 记录器实现 | internal/TestEventRecorder.java |
| 溢出信号 | EventOverflow 事件 |
功能
每个测试实例配有一个事件记录器,测试作者可在测试方法内通过 helper.getRecorder() 拿到
EventLog 的只读视图,按发出顺序回看本测试已记录的所有事件
(api/event/EventLog.java:6-8、snapshot() 返回 List<TestEvent>,文档说明为
「Unmodifiable view of all recorded events in emit order」)。
这套事件流是 Horizon-QA 断言之外的第二观察通道:断言只能表达"某状态成立/不成立", 事件日志则能表达"机器在这段时间里依次发生了什么"。
事件清单
api/event/ 目录下的 34 个事件记录,按 ls 输出的文件名逐个列出(不做分类小计,避免口径歧义):
| 分类 | 事件记录 |
|---|---|
| 测试生命周期 | TestStarted TestFinished BeforeBatchRan AfterBatchRan SequenceStepStarted SequenceStepFinished |
| 断言与隔离 | AssertionFailed IsolationViolation EventOverflow |
| 结构 | StructurePlaced StructureCheckRan |
| 配方注入与执行 | TestRecipeInjected TestRecipeRemoved RecipeStarted RecipeFinished RecipeProgressed RecipeAborted RecipeNotFound |
| GT 机器状态 | MachineDeformed MachineDisabled MachineExploded MachineFormed MaintenanceFixed MaintenanceIssueAppeared CleanroomEfficiencyChanged PollutionEmitted |
| GT 机器输入输出 | HatchFilled HatchVoltageMismatch EUBufferOverflow EUSupplyJobRegistered BusInserted ProgrammedCircuitSet |
| 配方加速(warp) | WarpStarted WarpFinished |
| tick 回调 | TickCallbackStateChanged |
另有 2 个接口:标记所有事件的 TestEvent,以及只读视图 EventLog(见上表基本信息)。
34 + 2 = 37,与目录文件数一致。
状态快照
api/event/state/ 下的 6 个类型为事件携带结构化状态:
| 类型 | 用途 |
|---|---|
FormedCause |
多方块形成原因 |
DeformedCause |
多方块变形原因 |
ExplodedCause |
多方块爆炸原因 |
HatchTopology |
舱室拓扑 |
MaintenanceSnapshot |
维护状态快照 |
RecipeStateSnapshot |
配方状态快照 |
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 事件类型目录文件数 | 37 | ls src/main/java/com/gtnewhorizons/horizonqa/api/event/*.java | wc -l |
| 其中事件记录数 | 34 | 37 减去 TestEvent.java 与 EventLog.java |
| 状态快照类型数 | 6 | ls src/main/java/com/gtnewhorizons/horizonqa/api/event/state/ |
snapshot() 返回类型 |
List<TestEvent>(不可修改) |
api/event/EventLog.java:11 |
| 事件记录默认开关 | true |
HorizonQAProperties.java:646-649 |
交互
- 记录器为每个测试实例独立创建(
internal/TestEventRecorder.java) EventOverflow表示事件数超过缓冲区上限;可用-Dhorizonqa.events=off关闭记录以省开销 (HorizonQAProperties.java:650-653解析on/off)- 事件被写入 JUnit XML 的
outputLines与状态 JSON 报告中(report/CaseResult.java:19的outputLines字段) - 隔离违规(
IsolationViolation)同时对应api/TestIsolationViolationException语义
相关条目
- GameTestHelper API -
getRecorder()与EventLog的获取入口 - GTNH 多方块 API - 多数 GT 事件由该层的事件采集点发出
- 报告输出 - 事件最终落到 JUnit XML 与 JSON
- 测试执行与状态机 - 事件记录与状态流转的关系