Android:仅为测试添加单独的资源

标签 android unit-testing testing tdd

我正在开发一个 android 库。

库接受一些参数。例如,它有一个 setStyle 方法,该方法接收对样式资源的引用:

fun setStyle(@StyleRes style: Int) ...

我想测试这个方法。为此,我想传递资源 TestStyle在单元测试中到图书馆。像这样:

myLibrary.setStyle(R.style.TestStyle)

但是,我不想创建 TestStyle主要资源src/main/res/values/styles.xml因为这将使使用我的图书馆的人可以使用资源。我希望它只在测试中可用。

相反,我尝试将 TestStyle <item />在位于 src/test/res/values/styles.xml 的新的仅测试文件中.但是,我不知道如何在单元测试中访问它,因为它不能通过 R 访问。

如何创建只能在测试中访问而不能在代码的其他部分访问的资源?

最佳答案

将您的资源放在某个文件夹中。例如“src/test/res”。并使用以下 gradle 配置:

android {
...
  testOptions {
        unitTests.includeAndroidResources = true
    }
}

tasks.withType(Test) {
    android.sourceSets.main.res.srcDirs += 'src/test/res'
}

这样,资源将对调试和发布测试版本可见,但不会打包到您的库或应用中。

关于Android:仅为测试添加单独的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63409626/

相关文章:

xml - XSLT 属性字符串测试

javascript - indexOf 不是 Firefox、Opera 中的函数,但在 IE 中有效,javascript 中的 indexOf 替代项用于测试字符串包含?

java - 每次切换 Activity 时 dubbel json 输出

android - TrafficStats tx 和 rx 值何时重置?

unit-testing - HTTP 一致性测试套件

java - 使用 Mockito.doAnswer(...) 重复回答处理

forms - 如何使用 EntityType 字段对 Symfony 4 表单进行单元测试

testing - tfs 2012中的测试影响分析

android - 如何在一个 Activity 中以不同的视频 View 播放多个视频

java - 我正在尝试设置我的 JAVA_HOME 路径以使用我的 javac.exe?