android - 使用 ProviderTestRule 测试 DocumentProvider
问题描述
我有一个 DocumentProvider,它由磁盘上的文件支持,我想用仪器测试进行测试。不幸的是,我找不到推荐的方法来做到这一点。在文档中ProviderTestCase2
,似乎它将与IsolatedContext
.
这样做的新方法似乎是ProviderTestRule
,但我无法让它与任何工作DocumentProvider
。
我的清单:
<application>
<provider
android:authorities="${documentsAuthority}"
android:name="com.example.asd.MyProvider"
android:exported="true"
android:enabled="true"
android:grantUriPermissions="true"
android:permission="android.permission.MANAGE_DOCUMENTS">
<intent-filter>
<action android:name="android.content.action.DOCUMENTS_PROVIDER"/>
</intent-filter>
</provider>
</application>
我的仪器测试:
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@get:Rule
public val permission = GrantPermissionRule.grant(Manifest.permission.MANAGE_DOCUMENTS)
@get:Rule
public val rule = ProviderTestRule.Builder(VaultDocumentProvider::class.java, BuildConfig.DOCUMENTS_AUTHORITY).build()
// any test goes here
}
当我运行测试时,它会在初始化时引发异常ProviderTestRule
:
java.lang.SecurityException: Provider must be exported
at android.provider.DocumentsProvider.attachInfo(DocumentsProvider.java:168)
at androidx.test.rule.provider.ProviderTestRule$Builder.createProvider(ProviderTestRule.java:529)
at androidx.test.rule.provider.ProviderTestRule$Builder.build(ProviderTestRule.java:482)
at com.example.asd.ExampleInstrumentedTest.<init>(ExampleInstrumentedTest.kt:22)
我已经尝试了 Provider 的所有排列exported
,permission
但无济于事。ProviderTestRule 不是这里的路吗?我用错了吗?还是某处有错误?
解决方案
推荐阅读
- android - 从 PC 查找文件时,Android 不会在“下载”文件夹中显示文件
- angular - 如何在 Firebase 连接中添加 Sweet Alert?
- java - Springbatch 从两个 DB 表中读取数据并写入 XML 文件
- delphi - 如何检查表单是否在 Delphi 中关闭?
- python - Python:增加日期字符串的日期
- python - Python-Pandas:根据列表中的存在重新分配列值
- javascript - 从功能组件内部渲染功能组件
- django - 为什么我要管理 Django 静态文件的两个版本?
- python-3.x - 将日志文件读取为 python 字典
- r - 如何沿 xy 坐标返回 z 值矩阵以通过 R 中的 plot_ly 绘制 3D 曲面图?