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

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

当我尝试在单元测试中使用 Jake Wharton 的 Android ThreeTen ABP 库时,出现异常:

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

说明 init 可能还没有被调用,但我如何在单元测试中执行此操作?

这个异常是因为 AndroidThreeTen.init 没有被上下文调用。 Local unit tests 没有 Android Threeten ABP 加载时区信息所需的应用程序或上下文。

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

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

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

注意这两个版本号不重合。