以下是我想测试的代码.
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环境中是正确的,但测试失败?