Phi*_*ons 28 android unit-testing gradle android-studio
我们有一个非常罕见的要求,即我们的Android应用程序执行单元测试,这些测试使用了仅需要进行单元测试的资产.
使用基于Eclipse的SDK,这很简单明了 - 测试项目是一个带有自己资产文件夹的独立项目.对于Android Studio,这意味着可以在build.gradle(或按惯例)配置.
最后,我们的单元测试正在执行,但是我已经用尽了所有关于自定义(和理想情况下,合并)资源文件夹的建议.这是我尝试过的:
在android闭包中向sourceSets添加一个测试闭包(通过闭包我的意思是在build.gradle中的花括号之间).
androidTest {
assets.srcDirs = ['src/androidTest/assets/']
}
Run Code Online (Sandbox Code Playgroud)同样的事情,但使用"test"作为sourceSet的名称(与上面的"androidTest"相对)以及"instrumentTest".
这个问题可以更一般地说是"如何在Android Studio中使用不同的目录进行单元测试".
我们已经浏览了Android的文档,要么我们不理解它,它是错误的,或者某处有错误.
任何帮助将非常感谢.
Phi*_*ons 28
我偶然发现了自己问题的答案,为此,我获得了令人垂涎的"Tumbleweed"奖,该奖项专门用于激发特别值得注意的缺乏兴趣的问题.它永远不会对某人有用.
最后,我将把它描述为Android的gradle构建中的一个错误,但是如果没有任何确凿的文档,那么它将不得不保持一种观点.
似乎"androidTest/assets"似乎不起作用.但是"调试/资产"确实如此.顺便说一下"debug/java"也是如此,因此解决方案是将任何和所有测试资源和代码放入调试根目录,但单元测试本身除外.
我还在build.gradle中添加了以下修改:
androidTest {
assets.srcDirs = ['src/main/assets', 'src/androidTest/assets/', 'src/debug/assets/']
java.srcDirs = ['src/main/java', 'src/androidTest/java', 'src/debug/java']
}
Run Code Online (Sandbox Code Playgroud)
现在,我正在运行单元测试,使用发布版本未知的资产和模拟.
您的问题很可能是您正在尝试访问应用程序(目标上下文)中的资产Context,但androidTest资产实际上驻留在单独的检测上下文中。即像这样:
InstrumentationRegistry.getInstrumentation().getTargetContext().getAssets()
Run Code Online (Sandbox Code Playgroud)
要访问下面的资产,androidTest/assets请使用以下命令:
InstrumentationRegistry.getInstrumentation().getContext().getAssets()
Run Code Online (Sandbox Code Playgroud)
请务必从 导入androidx.test.platform.app,该工具自 2022 年 3 月起尚未弃用。
| 归档时间: |
|
| 查看次数: |
10466 次 |
| 最近记录: |