【问题标题】:How can I unit test Android resources in feature modules?如何在功能模块中对 Android 资源进行单元测试?
【发布时间】:2020-11-20 12:04:03
【问题描述】:

我的应用正在使用功能模块。其中一个功能模块在 xml 资源中声明了一堆字符串,然后从我的 kotlin 代码中访问它们:例如getString(R.string.dialog_title)。我想运行 Junit 测试来证明检索到了正确的字符串内容。

Robolectric documentation page 建议使用函数getApplicationContext<MyApplication>()。但是,在对功能模块进行单元测试时,您无权访问应用程序。我猜这是因为功能模块与应用程序分开存在?

任何帮助表示赞赏。 :)

【问题讨论】:

    标签: android unit-testing android-resources androidx robolectric


    【解决方案1】:

    Robolectric 会稍微减慢您的单元测试速度。您可以只模拟上下文对象,然后执行以下操作:when(context.getString(any()).thenReturn('any/empty string')

    【讨论】:

    • 谢谢。我以前使用过 Robolectric,并且知道它的局限性。我很少使用它,但由于这种情况下字符串的内容非常重要,我希望通过自动化测试来验证值是否正确。 (在某种程度上,当你使用 Robolectric 时,就像使用 Junit 来做更多的集成式测试。)。您上面描述的方法更具单元风格,并且只会保证我的代码与正确的类进行交互。我想要一些Android功能来获取实际值:)。在应用模块中很容易做到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2022-11-29
    • 1970-01-01
    相关资源
    最近更新 更多