Android ThreeTen ABP 库在单元测试中不起作用 (ZoneRulesException)

Android ThreeTen ABP library not working in unit tests (ZoneRulesException)

提问人:Justin Meiners 提问时间:8/1/2019 最后编辑:Justin Meiners 更新时间:8/5/2019 访问量:972

问:

当我尝试使用 Jake Wharton 的 Android ThreeTen ABP 库时,在单元测试中,我得到一个异常:

org.threeten.bp.zone.ZoneRulesException: No time-zone data files registered

这个问题解释了可能没有被调用,但是我如何在单元测试中做到这一点?init

Android 单元测试 android-studio threetenbp

评论

1赞 Justin Meiners 8/5/2019
@OleV.V.不一样。这个问题是关于使用替代库进行单元测试的。这个问题是关于忘记打电话.我在回答中提到以防万一。initinit

答:

2赞 Justin Meiners 8/1/2019 #1

导致此异常的原因是未使用上下文调用。本地单元测试没有应用程序或上下文,这是Android Threeten ABP加载时区信息所必需的.AndroidThreeTen.init

对于单元测试,您可以使用常规的 ThreeTen BP,它不是为 Android 设计的。它可以在没有 Android 上下文的情况下加载时区信息。您的任何导入都不需要更改。

使用以下命令将额外的 threeten 库添加到您的 gradle 文件中。testImplementation

implementation "com.jakewharton.threetenabp:threetenabp:1.2.1"
testImplementation "org.threeten:threetenbp:1.4.0"

请注意,这两个版本号不一致。