public class Demo { private static final List<Pair<String,String>> mList; static { mList = new ArrayList<>(); mList.add(new Pair<>("F0","T1")); mList.add(new Pair<>("F1","T2")); mList.add(new Pair<>("F2","T3")); } public String getStr(int pos) { return mList.get(pos).first; }}
我是一个AndroID开发人员.我在测试和模拟代码时遇到了一些麻烦.我使用了mockito.
我已经尝试了一些代码来测试它,但结果并不是我的期望.
1.第一次尝试
@Testpublic voID test(){ Demo demo=new Demo(); assertEquals(demo.getStr(0),"F0"); /** * java.lang.AssertionError: * Expected :null * Actual :F0 */}
2.第二次尝试
@Testpublic voID test() { Demo demo = mock(Demo.class); docallrealMethod().when(demo).getStr(0); assertEquals(demo.getStr(0),"F0"); /** * java.lang.AssertionError: * Expected :null * Actual :F0 */}
任何人告诉我如何解决这个问题,通过调用真正的方法使demo.getStr(0)==“F0”?谢谢!
===========================
另一个问题与此有关
我已经尝试了另一个测试来测试androID.util.Pair类,结果是“pair.first”为null,.(有androIDTest和测试目录,我把它放到测试包中.它会影响结果吗? )
import androID.util.Pair;import org.junit.Test;import org.mockito.Mockito;import static org.junit.Assert.assertEquals;public class DemoTest { @Test public voID test1(){ Pair<String,String> pair=new Pair("First","Second"); assertEquals("First",pair.first); //pair.first was null,why? } @Test public voID test2(){ Pair<String,String> pair= Mockito.spy(Pair.class); assertEquals("First",pair.first); //pair.first was null also,why? }}
为什么简单代码在真实的androID环境中是正确的,但测试失败?
解决方法 我也有同样的问题.一个月前我也遇到了TextUtils类的问题.我向jUnit报告此问题,但他们坚持认为问题在于androID包.
所以你可以考虑很多androID包有jUnit的问题,也许robolectric可以处理这些.
对于那种情况,你可以使用这个包.这对我有用
import androID.support.v4.util.Pair;@H_403_2@ 总结
以上是内存溢出为你收集整理的android – 我如何模拟和测试这个类?全部内容,希望文章能够帮你解决android – 我如何模拟和测试这个类?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)