测试事件日志

基本信息

属性 值
事件类型目录 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 语义

相关条目