当前位置: 首页 > 知识库问答 >
问题:

AndroidThreeTen在没有Robolectric的情况下不能在单元测试中工作?

田意致
2023-03-14

我在创建一个不需要Robolectric的单元测试时遇到了麻烦。我在代码中使用AndroidThreeten.init(this),当我运行测试时,如果禁用robolectric,我会得到一个错误:org.Threeten.bp.zone.ZoneRulesException:没有注册时区数据文件

@Test
    fun `on Calling function i it returns an Int`() {
        assertThat("Returned class is not an Int", Log.i("Test", "Test"), isA(Int::class.java))
        assertThat("Returned Int is not 0", Log.i("Test", "Test"), `is`(0))
    }

还是因为这个我必须用robolectric?(附注:Log不是android的util.Log,而是我自己的类)(编辑过)

共有1个答案

周宏伯
2023-03-14

JVM单元测试不在Android运行时上运行。您可以直接使用ThreeTenBP来为常规JVM初始化相同的API而不是ThreeTenABP。

在我的项目build.gradle中,我使用如下设置:

implementation "com.jakewharton.threetenabp:threetenabp:${threetenabpVersion}"
testImplementation("org.threeten:threetenbp:${threetenbpVersion}") {
    exclude module: "com.jakewharton.threetenabp:threetenabp:${threetenabpVersion}"
}

哪里

threetenabpVersion = '1.2.0'
threetenbpVersion = '1.3.8'

这通常通过ThreeTenABP使用ThreeTenBP,但在单元测试配置中,它直接添加TreeTenBP作为依赖项,并使用其初始化代码。记不清为什么要输入exclude规则;这样已经有几年了。

 类似资料:
  • 问题 你想写个测试用例来准确的判断某个异常是否被抛出。 解决方案 对于异常的测试可使用 assertRaises() 方法。 例如,如果你想测试某个函数抛出了 ValueError 异常,像下面这样写: import unittest # A simple function to illustrate def parse_int(s): return int(s) class Test

  • 问题内容: 我有一个带有一些视图的布局,其中一个是EditText。布局很容易放在一页上,但当软键盘退出时,布局不会滚动。这是我的布局的回顾: 在清单中,我声明了该属性: 有谁知道为什么它不起作用以及如何确保它起作用? 提前致谢! 问题答案: 好的,显然不应该将ScrollView 设置为。我将其设置为并将其设置为页面底部的按钮。 不要问我为什么,但这可以解决问题。

  • 我试图为android应用程序的单元测试创建一个测试套件,但它总是以不同种类的配置错误而失败,其中之一如下, 详细信息:https://github.com/thereprator/wipro/tree/junit5 分支:junit5 null 请协助。

  • 我正在尝试将Cucumber集成到现有的Spring Boot项目中 当前项目是单个Maven模块 单元测试(不含Spring上下文)和集成测试(含Spring上下文)组合在同一个测试文件夹中。 我想做的是能够调整我的单元测试和集成测试。 但是一旦我添加了依赖项(为了能够在规范旁边运行Spring上下文),它就要求文件夹中的所有测试都用注释。 下面是我的测试套件,配置为获取测试规范。 是否可以将两

  • 我有HTML+CSS页面,其中有两个按钮: 我想让“顶级评论”默认可见。所以在本页的最后,我将简单的JavaScript 自动点击“顶部评论”按钮。 在我的开发环境中,一切都运行良好。但当将代码上传到启用CloudFlare的生产服务器时。JavaScript click()函数不起作用。 我已经为这个问题给CloudFlare的支持写了信,但两天后仍然没有任何回应。 对于我如何调试为什么这个Ja

  • 当我使用GitHub操作创建新工作流时,我有一个繁琐的工作流: 编辑<代码>。github/工作流/ci。yml git提交—修改—mhope git推送-f 转到我的浏览器,点击F5,单击工作流并祈祷 从我的旧脑袋上拔下一些头发,最后转到1 有没有更好的选择?