Android Eclipse jUnit没有看到超类
问题描述:
这可能是一个简单的答案。Android Eclipse jUnit没有看到超类
1)使用此代码创建一个JAR文件:
package com.myCompany.base;
public class Dex1 {
public String getTerm1() {
return "Term 1";
}
}
这是编译使用NetBeans到Dex1.jar。
2)在Eclipse中创建'Hello world'android应用程序。添加扩展Dex1的Dex2的代码。复制并添加Dex1.jar到java构建路径。
package com.myCompany;
import com.myCompany.base.Dex1;
public class Dex2 extends Dex1 {
public String getTerm2() {
return getTerm1() + " Term 2";
}
}
在我的onCreate()调用:
editText.setText(dex2.getTerm2());
一切都很正常!我得到了android屏幕上显示的正确字符串。是啊!
现在的问题开始:
3)使用Eclipse命令文件创建一个JUnit 3测试用例 - >新建 - >项目 - > Android的文本项目的命令,并添加代码:
package com.myCompany.test;
import junit.framework.TestCase;
import com.myCompany.Dex2;
public class Dex2Test extends TestCase {
protected void setUp() throws Exception {
super.setUp();
dex2 = new Dex2();
}
protected void tearDown() throws Exception {
super.tearDown();
}
Dex2 dex2;
public void testGetTerm2() {
/*line 21 */ assertEquals("Term 1 Term 2", dex2.getTerm2());
}
public void testGetTerm1() {
/* line 25 */ assertEquals("Term 1", dex2.getTerm1());
}
}
在第25行编译器为getTerm1()提供了'方法未定义'错误。我不明白为什么这是一个错误?
我试图将Dex1.jar添加到测试项目的Java Build路径中,它编译但我们收到了运行时错误'NoClassDefFoundError'。 Yuch!
更多信息16Mar2012
我设置了计划使用的Java类,同一个JAR文件,删除Android和它的工作。这使我得出结论,在Android/DalvikVM(又名DavrosVM)中必定存在一些异常。
更多信息16Mar2012结束
我这么想吗?
jar文件构建不正确(没想到这是可能的)? 我是否正确导入jar文件?
想要导入并覆盖jar文件中的类只是疯了吗?
谢谢您的阅读,请回复。
鱼
这不是我们使用Android测试项目的正常方式。一般来说,通过运行android junit测试,实际上有两个apk文件(app.apk和test.apk)安装在AVD(或真实设备)上运行,相互协调都由仪器测试运行器管理。 Dex2在主项目中定义,并在app.apk中定义,在仪器运行时,test.apk或instrument test runner的类加载器都不可见。 Android测试项目更侧重于测试Android组件(活动,服务等),不适合测试您的主项目中定义的这些POJO。 – yorkw 2012-03-15 03:01:05