我有一个Android项目,其中包含使用AndroidTestCase和ActivityInstrumentationTestCase2编写的测试用例。
到现在为止,我一直通过'ant'执行它们: ant clean emma调试安装测试 而且从IntelliJ内部也没有问题(每次我在测试代码中使用了正确的上下文)。
我最近用android-maven-plugin对我的项目进行了编组。
现在,我的一些测试用例(AndroidTestCase)失败了,因为他们找不到测试项目中定义的某些资源(例如字符串或样式)。
我知道那里有两个背景和可能的问题,但这似乎有所不同。 资源在我的测试项目中定义,它在测试项目中的R.java中显示(目标/生成源),在我的测试用例中,我使用测试项目的包名称来定义它,并且使用测试环境。
我尝试过使用mContext,并且getContext()也没有成功,测试失败了:
android.content.res.Resources$NotFoundException: String resource ID #0x7f05001c
该整数与我的测试项目中生成的R.java中的整数相匹配。 测试中的应用程序中不存在同名资源(包名称或资源名称),仅在测试应用程序中。
我已经尝试在pom.xml中指定packageName,没有区别。
我不明白如何将符号用于测试项目的R,并使用测试项目的上下文,而不是找到测试项目中定义的资源。
更新: 如果我将AndroidTestCase转换为ActivityInstrumentationTestCase2然后使用getInstrumentation()。getContext()。getResource(),那么它可以工作,但是当我想要目标应用程序上下文(使用getInstrumentation()。getTargetContext())时,它会导致单元出现问题正在测试,因为他们无法访问应用程序的上下文。
因此,似乎在通过android-maven-plugin运行测试时,测试应用程序的运行方式存在一些差异。