百科.dev
登录
> 返回资讯列表
news_article.exe
我决定主义的测试通过好几个月 而两个建筑玩不同的游戏

我决定主义的测试通过好几个月 而两个建筑玩不同的游戏

My determinism test passed for months while the two builds played different games

2026年8月1日18 次浏览来源:Dev.to 阅读原文

我编译了Android游戏的 规则引擎 给浏览器 同为Java,两个编译器. 然后我检查了两人是否同意. 他们没有这样做,而且我已经做了一个完全绿色的测试。 同一指令有两次:绿色对接当前引擎,再对断层的刻录承诺. 如果您想要选择文本, 请将其作为终端会话播放 。 设置 规则生活在一个模块中,没有Android在它的类路径上,这就是让我用TeaVM第二次编译它们,并在浏览器标签的画布上运行同样的逻辑. 种子跑跑应当可再生. 给引擎种子42和固定的输入顺序,你每次都应该得到同样的游戏——这就是运行可回放和两个构建可比较的. 这是...

我编译了Android游戏的 规则引擎 给浏览器 同为Java,两个编译器. 然后我检查了两人是否同意. 他们没有这样做,而且我已经做了一个完全绿色的测试。 同一指令有两次:绿色对接当前引擎,再对断层的刻录承诺. 如果您想要选择文本, 请将其作为终端会话播放 。 设置 规则生活在一个模块中,没有Android在它的类路径上,这就是让我用TeaVM第二次编译它们,并在浏览器标签的画布上运行同样的逻辑. 种子跑跑应当可再生. 给引擎种子42和固定的输入顺序,你每次都应该得到同样的游戏——这就是运行可回放和两个构建可比较的. 以下是我实际得到的,相同的种子,相同的输入: JVM浏览器首个障碍x,帧60 405.426 304.426 仍然活在帧360 yes no final 分数9 6 不相差. 一个不同的游戏。 原因很无聊 测试失败不是。 已使用。 它的算法被指定为常数——你可以读取Javadoc中准确的线性相容发生器. 所以种子应该指定一个序列 但我的代码没有运行算法。 它运行着运行时间 而不是JVM。 规格描述什么是做什么的;它没有强迫一个外国运行时间的再执行匹配. 修补花了十分钟:将LCG写出长手,这样两个建筑都执行同样的算术,而不是相信他们会这样做。 有趣的是测试。 测试是不可能得到的 我有一个测试叫。 它两次运行发动机,种子相同,并断言结果相符。 它传递了每一个承诺,包括浏览器所构建的每一个承诺都在玩不同的游戏. 它必须经过。 它在同一运行时间运行了两次发动机. 这样的测试无法观察到运行时间的分歧

> 分享: