che*_*048 3 android unit-testing mockito
以下是我想测试的代码.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我是一个Android开发人员.我在测试和模拟代码时遇到了一些麻烦.我使用了mockito.我已经尝试了一些代码来测试它,但结果并不是我的期望.
1.第一次尝试
@Test
public void test(){
Demo demo=new Demo();
assertEquals(demo.getStr(0),"F0");
/**
* java.lang.AssertionError:
* Expected :null
* Actual :F0
*/
}
Run Code Online (Sandbox Code Playgroud)
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
*/
}
Run Code Online (Sandbox Code Playgroud)
任何人告诉我如何解决这个问题,通过调用真正的方法使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?
}
}
Run Code Online (Sandbox Code Playgroud)
为什么简单的代码在真实的android环境中是正确的,但测试失败?
我也有同样的问题.一个月前我也遇到了TextUtils类的问题.
我向jUnit报告此问题,但他们坚持认为问题在于android包.
所以你可以考虑很多android包有jUnit的问题,也许roboLectric可以处理这些.
对于那种情况,你可以使用这个包.这对我有用
import android.support.v4.util.Pair;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1329 次 |
| 最近记录: |