android 模拟测试,android – 我如何模拟和测试这个类?

以下是我想测试的代码.

public class Demo {

private static final List> 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.第一次尝试

@Test

public void test(){

Demo demo=new Demo();

assertEquals(demo.getStr(0),"F0");

/**

* java.lang.AssertionError:

* Expected :null

* Actual :F0

*/

}

2.第二次尝试

@Test

public 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 pair=new Pair("First","Second");

assertEquals("First",pair.first);

//pair.first was null,why?

}

@Test

public void test2(){

Pair pair= Mockito.spy(Pair.class);

assertEquals("First",pair.first);

//pair.first was null also,why?

}

}

为什么简单代码在真实的android环境中是正确的,但测试失败?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值