AndroidTestCase在通过maven执行时无法找到测试项目的资源

时间:2014-04-21 19:33:29

标签: android maven testing

我有一个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运行测试时,测试应用程序的运行方式存在一些差异。

0 个答案:

没有答案