GameTestHelper API

基本信息

属性 值
实现类 com.gtnewhorizons.horizonqa.api.GameTestHelper
注入方式 作为测试方法唯一参数传入,签名 void testName(GameTestHelper helper)
构造函数 GameTestHelper(GameTestInstance, WorldServer, int originX, int originY, int originZ)(GameTestHelper.java:57)
公开方法数 68
公开断言方法数 37

[!NOTE] 坐标类方法默认使用测试局部坐标,并提供 TestPos、绝对 int 三元组、结构标签字符串的平行重载。 标签重载经 pos(String) 解析(含结构旋转),无匹配标签时抛 LabelResolutionException (GameTestHelper.java:42-47)。

功能

GameTestHelper 是测试方法体内唯一的操作入口,覆盖四类能力:坐标换算、断言、世界操作、流程控制。

坐标换算

方法 说明 来源
absolute(x, y, z) 局部坐标 → 绝对 TestPos GameTestHelper.java:68
absolute(TestPos) 同上,TestPos 重载 GameTestHelper.java:73
pos(String label) 结构标签名 → TestPos GameTestHelper.java:83
absolute(String label) 标签 → 绝对 TestPos GameTestHelper.java:93
getOriginX/Y/Z() 测试格原点坐标 GameTestHelper.java

断言

断言失败抛 GameTestAssertException(内部包 GameTestInfrastructureException), 带位置信息以定位到具体方块坐标。

分组 方法
布尔 assertTrue / assertFalse(均有带 message 与不带 message 两种重载)
空值 assertNull / assertNotNull
相等 assertEquals(Object / long / double+delta)、assertNotEquals(同三种)、assertSame / assertNotSame
集合 assertIterableEquals、assertLinesMatch
方块 assertBlockPresent / assertBlockAbsent
TileEntity assertTileEntityPresent、assertTileNBT、assertTileNBTPath
实体 assertEntityPresent / assertEntityAbsent、assertEntityCount、assertEntityNBT、assertEntityNBTPath
物品 assertItemEqual、assertSlot、assertInventoryContains / assertInventoryCount / assertInventoryEmpty
流体 assertFluidTank / assertFluidTankEmpty
红石 assertRedstonePower
类型 assertInstanceOf
异常 assertThrows
前提 assumeTrue / assumeFalse(失败时为 ASSUMPTION_FAILED,非真实失败)

完整方法名清单(grep -n '^ public ' GameTestHelper.java): absolute afterTest assertBlockAbsent assertBlockPresent assertEntityAbsent assertEntityCount assertEntityNBT assertEntityNBTPath assertEntityPresent assertEquals assertFalse assertFluidTank assertFluidTankEmpty assertInstanceOf assertInventoryContains assertInventoryCount assertInventoryEmpty assertItemEqual assertIterableEquals assertLinesMatch assertNotEquals assertNotNull assertNotSame assertNull assertRedstonePower assertSame assertSlot assertThrows assertTileEntityPresent assertTileNBT assertTileNBTPath assertTrue assumeFalse assumeTrue clearSlot countItems destroyBlock disableRandomTicks extractItem fail fixWorldTime getEntities getEntityNBT getOriginX getOriginY getOriginZ getRecorder getTileNBT getWorld gtnh insertFluid insertItem onEachTick onEachTickDisabled pos pulseRedstone setBlock setRedstoneInput setSlot setTile setWeather simulateLeftClick simulateRightClick spawnEntity spawnFakePlayer startSequence succeed succeedAtTimeout succeedWhen

流程控制

方法 说明 来源
succeed() 立即判定通过 GameTestHelper.java:111
succeedWhen(BooleanSupplier) 每 tick 求值,谓词为真时通过 GameTestHelper.java:116
succeedAtTimeout() 超时时判定通过 GameTestHelper.java:124
fail(String) / fail() 立即判定失败 GameTestHelper.java:196、201
startSequence() 进入序列(sequence)模式,支持分步时序断言 GameTestHelper.java
onEachTick(Runnable) / onEachTickDisabled() 注册 / 注销每 tick 回调 GameTestHelper.java
getRecorder() 取只读 EventLog,查看本测试已记录事件 api/event/EventLog.java:6-8
afterTest 测试结束钩子 GameTestHelper.java
gtnh() 取 GTNHGameTestHelper 扩展 GameTestHelper.java

隔离与时间

  • fixWorldTime():固定世界时间,消除昼夜噪声
  • disableRandomTicks():关闭随机刻
  • setWeather(...):通过 api/Weather.java 枚举设置天气
  • 每测试通过独立的 fixture 区域(TestCell)与强制加载区块(GameTestChunkLoader)保证隔离
  • 违反隔离会抛 TestIsolationViolation(api/TestIsolationViolation.java)

数值

数值名 值 来源
公开方法总数 68 grep -n '^ public ' GameTestHelper.java
断言类方法数(含 assume) 37 同上(assert* 32 + assumeTrue + assumeFalse + assertThrows 计入口径)
默认超时 tick 数 100 api/annotation/GameTest.java:17
每 tick 时长 0.05 秒 report/CaseResult.java:27(TICKS_PER_SECOND = 20.0)

交互

  • 断言在序列(sequence)步骤内超时,会包装为 SequenceStepTimeoutException (internal/SequenceStepTimeoutException.java:7),它继承自 GameTestAssertException 并保留步骤快照与最后一次断言的带位置 cause(SequenceStepTimeoutException.java:11-18)
  • assumeTrue / assumeFalse 失败不计入失败,而是 ASSUMPTION_FAILED (report/CaseResult.java:28)
  • gtnh() 返回的扩展依赖 GregTech 5 Unofficial,非 GT 环境下不可用

相关条目