這可能是一個簡單的答案。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