Android-Junit-TestCase-ClassLoader

近期在自学android开发,在做例子的时候,发现单元测试方面的资料好像不多,希望能在这儿和大家一起讨论下。  有一个问题在问答频道放了好几天,都无人回答,先拿过来重发下,也想依借此为引子,说说android下的测试驱动开发。   问题是这样, 测试类继承TestCase,其中有试图mock一个Cursor进行单元测试,一跑就ClassNotFoundException   测试类:   Java代码: import junit.framework.TestCase; import android.database.Cursor; public class ContactHandlerTest extends TestCase { private ContactHandler handler; @Override protected void setUp() throws Exception { super.setUp(); handler = new ContactHandler(); } public void testConvertToString() { Cursor mockCursor = new MockCursor(); String [] result = handler.convertToString(mockCursor); assertEquals("kkkk(2222)", result[0]); assertEquals("aaaa(3333)", result[1]); } }   MockCursor: 仅仅mock了一些想要的动作   Java代码: import android.content.ContentResolver; import android.database.CharArrayBuffer; import android.database.ContentObserver; import android.database.Cursor; import android.database.DataSetObserver; import android.net.Uri; import android.os.Bundle; public class MockCursor implements Cursor { private String [][] dump = new String [][] { {"kkkk", "2222"}, {"aaaa", "3333"} }; …………………… ………… …… }   Manifest.xml   Java代码 :   异常栈:   Java代码: java.lang.NoClassDefFoundError: android/database/Cursor at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) Caused by: java.lang.ClassNotFoundException: android.database.Cursor at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 10 more   BTW,昨天在跑另个case的是有也遇到ClassNotFound,后来继承关系从TestCase换成 ActivityInstrumentationTestCase2就正常了,从这里推测应该是android.*这个package下面的类都需要 android.test下的TestCase才能跑的动。如果是这样的话,要测一些东西还是挺费劲的,等于带着容器一起跑测试。   更不明白的就是,android的classLoader是一种怎样的工作机制?不知道大家有无遇到类似的问题,有什么好的解决方案。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值