zoukankan      html  css  js  c++  java
  • Mockito使用总结

    Mockito简单使用

    对于某些不容易构造,或者不容易获取比较复杂的对象,用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法。

    Mock-Object:

    mock一个bug.class的id

    Bug s=mock(Bug.class); 
    when(s.getId()).thenReturn("dddddddd");
    System.out.println(s.getId());   //print ddddddd

    Mock-List:

    mock一个list里面的元素

    Mockito注解使用:

    为需要mock的对象添加注解,在测试代码执行的情况下触发该注解的生效,把mock覆盖对象注入,以达到可以在正式的代码加入mock,只要控制好生效的机制

    @Mock //mock 注解
    @Autowired  //spring 注解
    private BugDaoI bugDao;
    
        @Override
        public Map<String, List<Object>> clo() {        
            MockitoAnnotations.initMocks(this); //运行到这里注解生效
            List<Object[]> mockdata=new LinkedList<Object[]>();
            mockdata.add(new Object[]{"8645","test1"});
            when(bugDao.findBySql("select distinct name from tbug")).thenReturn(mockdata);//开始mock

    通过mock集合jacoco提高测试代码覆盖率:

     测试代码:能通过变化参数(等价类,边界值)来观察整体覆盖率的提升,下面是mock后的覆盖率提升示例

    Jacoco统计:能更清晰的把握你写的白盒测试代码的覆盖情况,收益情况

    总结:

    单元测试的mock比httpmock要简单很多
    通过注解对mock的时机进行控制,十分灵活

    动态添加@Mock注解:

    动态添加注解
    <dependency>
        <groupId>javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.12.0.GA</version>
    </dependency>

     

  • 相关阅读:
    Python 企业面试题集锦之Python基础
    Jmeter 线程之间传递参数
    Jmeter 5.1参数化csv引入文件
    Jmeter 5.1命令行执行bat文件
    Idea JAVA項目的导入JAR包和导出jar包
    charles 设置弱网测试
    Jmeter_Beanshell 返回值中提取参数值
    在Notepad++里配置python环境
    python json格式参数遍历所有key、value 及替换key对于的value
    python 使用yaml模块
  • 原文地址:https://www.cnblogs.com/season-xie/p/6340058.html
Copyright © 2011-2022 走看看