使用Mockito来测试Java的行为
发布时间:2020-07-09 06:53:42  所属栏目:Java  来源:互联网 
            导读:我想测试一个使用Mockito对其进行增强的 java方法.问题是当我不知道如何设定增强工作的期望.以下代码从 an unanswered question in the mockito google group获得: import static org.mockito.Mockito.when;import static org.testng.Assert.assertTrue;impo
                
                
                
            | 
                         我想测试一个使用Mockito对其进行增强的 java方法.问题是当我不知道如何设定增强工作的期望.以下代码从 an unanswered question in the mockito google group获得: import static org.mockito.Mockito.when;
import static org.testng.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.mockito.Mockito;
import org.testng.annotations.Test;
public class ListTest
{
  @Test
  public void test()
  {
    List<String> mockList = Mockito.mock(List.class);
    Iterator<String> mockIterator = Mockito.mock(Iterator.class);
    when(mockList.iterator()).thenReturn(mockIter);
    when(mockIter.hasNext()).thenReturn(true).thenReturn(false);
    when(mockIter.next()).thenReturn("A");
    boolean flag = false;
    for(String s : mockList) {
        flag = true;
    }
    assertTrue(flag);
  }
} 
 for循环中的代码不会被执行.设置迭代器的期望不起作用,因为java enhanced for不在内部使用list iterator.设置List.get()方法的期望不是因为增强的实现似乎也不调用列表的get()方法. 任何帮助将不胜感激. 解决方法模拟迭代器为我工作.见下面的代码示例:import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Collection;
import java.util.Iterator;
import org.junit.Before;
import org.junit.Test;
public class TestMockedIterator {
    private Collection<String> fruits;
    private Iterator<String> fruitIterator;
    @SuppressWarnings("unchecked")
    @Before
    public void setUp() {
        fruitIterator = mock(Iterator.class);
        when(fruitIterator.hasNext()).thenReturn(true,true,false);
            when(fruitIterator.next()).thenReturn("Apple")
            .thenReturn("Banana").thenReturn("Pear");
        fruits = mock(Collection.class);
        when(fruits.iterator()).thenReturn(fruitIterator);
    }
    @Test
    public void test() {
        int iterations = 0;
        for (String fruit : fruits) {
            iterations++;
        }
        assertEquals(3,iterations);
    }
}                        (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
相关内容
- java – 如何说服其他开发人员不要忽视异常?
 - java – GSON解析动态JSON字段
 - java获取鼠标在屏幕上坐标的方法
 - java – 处理MaxUploadSizeExceededException不能停止上传文
 - java web上传文件和下载文件代码片段分享
 - 浅谈s:select 标签中list存放map对象的使用
 - java – 任何关于官方GWT MVP框架的教程?
 - 为什么TimeUnit是java.util.concurrent的成员?
 - java – 使用Maven,OSGi和Bndtools
 - Java xml出现错误 javax.xml.transform.TransformerExcepti
 
