gpt4 book ai didi

android - 如何将数据库测试夹具从我的单元测试应用程序传输到设备

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:17:57 26 4
gpt4 key购买 nike

我正在编写一个 Android JUnit 测试并想要复制/重置一个测试夹具文件(它是一个 SQLite 数据库文件。)如果我在主应用程序中,我知道我可以将文件放在 Assets 目录中,然后使用 getResources().getAssets().open(sourceFile)

但是,此 API 似乎无法从 ActivityInstrumentationTestCase2 类中获得。

有没有一种简单的方法可以从测试 PC 复制文件,或者我应该只在设备上保留一份新的测试夹具副本并将其复制到一个临时文件上?

谢谢!

最佳答案

您的测试应用程序和主应用程序中的资源可在仪器测试用例中单独访问。如果你想访问测试项目本身的 res/raw 或 assets 文件夹中的资源,你可以使用

getInstrumentation().getContext().getResources()

要访问正在测试的应用程序(“目标”应用程序)中的资源,请使用

getInstrumentation().getTargetContext().getResources()

但是请注意,您永远不能修改 Assets 文件夹中的文件;

getResources().getAssets().open(sourceFile)

返回一个 InputStream。没有办法修改文件。这是因为 Assets 以压缩形式存储在 APK 中,根本不可写。

如果您想做的是修改您正在测试的 Activity 使用的文件的路径,您应该使用 ActivityUnitTestCasesetActivityContext()RenamingDelegatingContext .这允许您通过指定目录前缀将上下文中的文件和数据库访问重定向到新目录。您甚至可以使用 more complex constructor为大多数操作包装目标上下文,但使用测试应用程序的文件操作上下文,因此该 Activity 将访问存储在测试应用程序而不是主应用程序中的文件,但仍使用主应用程序中的其他资源。

关于android - 如何将数据库测试夹具从我的单元测试应用程序传输到设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3790963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com