【问题标题】:ActivityInstrumentationTestCase2.getActivity() throws ClassCastException for librariesActivityInstrumentationTestCase2.getActivity() 为库抛出 ClassCastException
【发布时间】:2012-03-29 16:10:22
【问题描述】:

我正在为项目 A 编写 Android JUnit 测试用例,其中项目 B 作为库(项目属性/Android/库)。我的测试用例需要从项目 A 和项目 B 访问资源(查看 id、字符串等)。如果我将项目 A 和/或项目 B 作为 Android / 库或 Java 构建路径 / 项目添加到我的测试项目中,对 ActivityInstrumentationTestCase2.getActivity() 的任何调用都会引发 ClassCastException。

如果我不添加它们,调用会返回相应的 Activity,但我无权访问两个被测项目的资源 ID。我也无权访问项目 B 中的对象,这些对象是正确测试项目 A 所必需的。我不能在这里使用模拟对象。

以前有没有人遇到过并解决过这个问题?

【问题讨论】:

  • 我无权访问正在测试的两个项目的资源 ID,使用 logcat 发布源代码可以帮助其他人找到您的问题。
  • 我在 NDA 下工作,不能发布源数据或 logcat 数据(希望我可以)。我知道这让回答这个问题变得更加困难......

标签: java android eclipse android-activity classcastexception


【解决方案1】:

试试这个从图书馆访问资源:(我认为它会工作)

getInstrumentation().getTargetContext().getResources()...;

这将从测试项目中加载资源:(绝对有效)

getInstrumentation().getContext().getResources()...;

【讨论】:

  • 谢谢!我可以使用您上面描述的方法获取资源。但我也需要访问库项目的公共类和接口。我已经编辑了问题以表明这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
相关资源
最近更新 更多