gpt4 book ai didi

java - Android 测试类在 Eclipse 中编译失败,出现 "bound mismatch"错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:02:14 27 4
gpt4 key购买 nike

我正在为扩展 ActivityInstrumentationTestCase2 的安卓应用编写测试用例.测试类如下所示:

public class SolutionEntryActivityTest extends ActivityInstrumentationTestCase2<SolutionEntryActivity> {

public SolutionEntryActivityTest() {

super(SolutionEntryActivity.class);
}
}

在 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

我从 2004 中发现了两个 eclipse 错误和 2005这似乎处理类似的问题,但这些应该长期修复。

我在 Android 2.2 和 Sun Java 1.6 上使用 Eclipse Helios。

知道发生了什么吗?

最佳答案

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

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

关于java - Android 测试类在 Eclipse 中编译失败,出现 "bound mismatch"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5038790/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com