`

Mockito的doAnswer和answer

阅读更多
  在单元测试中,有assert来判断测试的结果,verfiy来判断执行的次数和顺序,doAnswer用来判断执行的方法和方法的参数。
    doAnswer一般和when配合使用,当条件满足是,执行对应的Answer的answer方法,如果answer方法抛出异常,那么测试不通过。
    这是我的一个实例:





import java.util.List;

import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
 import static org.mockito.Mockito.*;

public class CustomAnswer implements Answer<String> {
    public String answer(InvocationOnMock invocation) throws Throwable {
        Object[] args = invocation.getArguments();
        Integer num = (Integer)args[0];
        if( num>3 ){
            return "yes";
        } else {
            throw new RuntimeException();
        }
    }
    
    
    @Test
    public void customAnswerTest(){
        List<String> mock = mock(List.class);
        Mockito.doAnswer(new CustomAnswer()).when(mock).get(anyInt());
        mock.get(4); 
        mock.get(2); 
        
    }

    
}


当 mock.get(2); 的时候,执行判断,这个时候num>3 不成立,抛出异常,测试不通过。

answer方法中通过参数invocation能获取的东西是这些:一般判断方法的参数

public interface InvocationOnMock extends Serializable {

    /**
     * returns the mock object 
     * 
     * @return mock object
     */
    Object getMock();

    /**
     * returns the method
     * 
     * @return method
     */
    Method getMethod();

    /**
     * returns arguments passed to the method
     * 
     * @return arguments
     */
    Object[] getArguments();

    /**
     * calls real method
     * <p>
     * <b>Warning:</b> depending on the real implementation it might throw exceptions  
     *
     * @return whatever the real method returns / throws
     * @throws Throwable in case real method throws 
     */
    Object callRealMethod() throws Throwable;
}
分享到:
评论

相关推荐

    mockito-core-4.0.0-API文档-中文版.zip

    赠送jar包:mockito-core-4.0.0.jar; 赠送原API文档:mockito-core-4.0.0-javadoc.jar; 赠送源代码:mockito-core-4.0.0-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    mockito-core-4.0.0-API文档-中英对照版.zip

    赠送jar包:mockito-core-4.0.0.jar; 赠送原API文档:mockito-core-4.0.0-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    mockito-jar.zip

    mockito-all-1.10.19.jar mockito-core-4.5.1.jar mockito-junit-jupiter-4.5.1.jar mockito-junit-jupiter-4.5.1-sources.jar

    Mockito+Junit5测试方法实践

    内容概要:参考Mockito官方API文档,实践框架每个特性。 适合人群:Mockito入门人员以及想全面熟悉Mockito特性的人员,做到了开箱即用。 能学到什么:“Mockito 4.6.0 + Junit 5”的组合编程。 使用建议:使用前安装...

    mockito-core-3.8.0-API文档-中文版.zip

    赠送jar包:mockito-core-3.8.0.jar; 赠送原API文档:mockito-core-3.8.0-javadoc.jar; 赠送源代码:mockito-core-3.8.0-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    mockito-core-2.15.0-API文档-中文版.zip

    赠送jar包:mockito-core-2.15.0.jar; 赠送原API文档:mockito-core-2.15.0-javadoc.jar; 赠送源代码:mockito-core-2.15.0-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    Mockito for spring

    Mockito for spring Mockito for spring Mockito for spring Mockito for spring Mockito for spring Mockito for spring Mockito for spring Mockito for spring Mockito for spring Mockito for spring Mockito ...

    mockito-core-3.8.0-API文档-中英对照版.zip

    赠送jar包:mockito-core-3.8.0.jar; 赠送原API文档:mockito-core-3.8.0-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    powermock-api-mockito2-2.0.9-API文档-中英对照版.zip

    赠送jar包:powermock-api-mockito2-2.0.9.jar; 赠送原API文档:powermock-api-mockito2-2.0.9-javadoc...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    mockito-core-3.1.0-API文档-中英对照版.zip

    赠送jar包:mockito-core-3.1.0.jar; 赠送原API文档:mockito-core-3.1.0-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    mockito-core-3.9.0-API文档-中文版.zip

    赠送jar包:mockito-core-3.9.0.jar; 赠送原API文档:mockito-core-3.9.0-javadoc.jar; 赠送源代码:mockito-core-3.9.0-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    mockito-1.9.5.zip

    mockito junit 单元测试 mockito junit 单元测试

    Mockito-Programming-Cookbook

    Mockito is an open source testing framework for Java released under the MIT License. The framework allows the creation of test double objects (mock objects) in automated unit tests for the purpose of ...

    mockito-core-2.15.0-API文档-中英对照版.zip

    赠送jar包:mockito-core-2.15.0.jar; 赠送原API文档:mockito-core-2.15.0-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    mockito-1.9.0.zip

    mockito-1.9.0.zip,免费下载,需要的拿去

    Junit4.12+mockito

    资源含有Junit4.12.jar和mockito的jar包以及mockito的文档

    mockito-core-3.6.0.jar

    mockito-core-3.6.0.jarmockito-core-3.6.0.jar

    mockito-core-3.12.2.jar

    mockito-core-3.12.2

    概述 Mockito

    关 于 Mockito 的 概 述

    mockito-all-1.7.jar

    mockito-all-1.7

Global site tag (gtag.js) - Google Analytics