fer*_*nko 6 java eclipse generics android unit-testing
我正在为Android应用程序扩展编写测试用例ActivityInstrumentationTestCase2.测试类看起来像这样:
public class SolutionEntryActivityTest extends ActivityInstrumentationTestCase2<SolutionEntryActivity> {
public SolutionEntryActivityTest() {
super(SolutionEntryActivity.class);
}
}
Run Code Online (Sandbox Code Playgroud)
在eclipse中,此代码无法使用错误进行编译: Bound mismatch: The type SolutionEntryActivity is not a valid substitute for the bounded parameter <T extends Activity> of the type ActivityInstrumentationTestCase2<T>
但SolutionEntryActivity确实是一个android.app.Activity,类型层次结构是这样的:
Activity
OrmLiteBaseActivity<H> (abstract)
KabowieActivity
PracticeActivity (abstract)
SolutionEntryActivity
Run Code Online (Sandbox Code Playgroud)
我在2004年和2005年发现了两个日食漏洞似乎处理了类似的问题,但这些问题应该是长期修复的.
我正在使用Eclipse Helios与Android 2.2和Sun Java 1.6.
知道发生了什么事吗?
问题是,当您使用android eclipse项目创建测试项目时,不会自动解析从待测项目到外部库的引用.OrmLiteBaseActivity类(请参阅原始问题中的类型层次结构)来自包含在测试项目的构建路径中的外部jar.该外部jar也需要明确地包含在测试项目的构建路径中.不确定这是否可以被视为一个错误,如果是,那么.但我希望原始项目使用的所有库也应该可用于测试项目.无论如何,感谢那些阅读这个问题的人.
编辑 更正:将相同的库添加到构建路径两次(一次到测试项目之一,一次到testproject)不起作用,因为JUnit不理解两者实际上是同一个库.编译将成功,但LogCat将给出一条错误消息,指出SolutionEntryActivity的超类来自不同的来源.这里的解决方案是从原始项目导出外部库(配置构建路径 - >订单和导出 - >选择要导出的库),而不是直接将它们添加到测试项目的构建路径中.
| 归档时间: |
|
| 查看次数: |
1848 次 |
| 最近记录: |