测试应用程序和主应用程序中的资源可在仪器测试用例中单独访问。如果要访问测试项目本身的 res/raw 或 assets 文件夹中的资源,可以使用
getInstrumentation().getContext().getResources()
要访问正在测试的应用程序(“目标”应用程序)中的资源,请使用
getInstrumentation().getTargetContext().getResources()
但是请注意,您永远不能修改 assets 文件夹中的文件;
getResources().getAssets().open(sourceFile)
返回一个输入流。没有办法修改文件。那是因为资产被压缩存储在 APK 中,并且根本不是真正可写的。
如果您要做的是修改您正在测试的 Activity 使用的文件的路径,您应该使用ActivityUnitTestCase和setActivityContext()和RenamingDelegatingContext。这允许您通过指定目录前缀将上下文中的文件和数据库访问重定向到新目录。您甚至可以使用更复杂的构造函数来包装大多数操作的目标上下文,但将测试应用程序的上下文用于文件操作,因此活动将访问存储在测试应用程序而不是主应用程序中的文件,但仍会使用其他资源初级应用。