Android测试类无法在eclipse中编译,并出现"绑定不匹配"错误

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.

知道发生了什么事吗?

fer*_*nko 5

问题是,当您使用android eclipse项目创建测试项目时,不会自动解析从待测项目到外部库的引用.OrmLiteBaseActivity类(请参阅原始问题中的类型层次结构)来自包含在测试项目的构建路径中的外部jar.该外部jar也需要明确地包含在测试项目的构建路径中.不确定这是否可以被视为一个错误,如果是,那么.但我希望原始项目使用的所有库也应该可用于测试项目.无论如何,感谢那些阅读这个问题的人.

编辑 更正:将相同的库添加到构建路径两次(一次到测试项目之一,一次到testproject)不起作用,因为JUnit不理解两者实际上是同一个库.编译将成功,但LogCat将给出一条错误消息,指出SolutionEntryActivity的超类来自不同的来源.这里的解决方案是从原始项目导出外部库(配置构建路径 - >订单和导出 - >选择要导出的库),而不是直接将它们添加到测试项目的构建路径中.