我正在开发一个 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/