当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

junit单元测试2: mockito基础使用

发表于: 2013-12-11   作者:baowp   来源:转载   浏览次数:
摘要: 接上篇,如果需要mock一个接口,testng可以使用jmockit;对于junit使用mockito是个很好的选择。以下给个例子 package com.github.baowp.domain.service; import com.github.baowp.domain.entity.BookEntity; import com.github.baowp.domain.reposit

接上篇,如果需要mock一个接口,testng可以使用jmockit;对于junit使用mockito是个很好的选择。以下给个例子

package com.github.baowp.domain.service;

import com.github.baowp.domain.entity.BookEntity;
import com.github.baowp.domain.repository.BookRepository;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.*;

/**
 * Created with IntelliJ IDEA.
 * User: baowp
 * Date: 12/7/13
 * Time: 10:26 AM
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "BookServiceTest-context.xml")
public class BookServiceMockTest {
    @Resource
    @InjectMocks//如果bookService里直接引用bookRepository,则可以mock后的bookRepository注入
    private BookService bookService;
	
    @Mock//要进行mock的对象
    private BookRepository bookRepository;

    /**
     * 使@Mock注释的对象能够生成mock后的实例
     */
    @Before
    public void mockitoInitialize() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testInsert() {
        BookEntity book = new BookEntity();
        book.setTitle("title");
        book.setPrice(1.1f);

	//设置期望返回
        when(bookRepository.insert(book)).thenReturn(2);

        int flag = bookService.insert(book);
        assertEquals(2, flag);
	verify(bookRepository,times(1)).insert(book);//验证insert接口是否调用一次
    }
}

 

maven usage:

<dependency>
	<groupId>org.mockito</groupId>
	<artifactId>mockito-all</artifactId>
	<version>1.9.0</version>
	<scope>test</scope>
</dependency>

 

这是一个基础的mock使用,@Mock对象只在spring bean直接引用的时候生效,如果bookService起用了事务有了代理,又或是bookService是引用了别的对象A,A再引用bookRepository,就会mock失效。

junit单元测试2: mockito基础使用

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
前言 要做单元测试,注定少不了单元测试框架和Mock框架.本文选择Junit +Mockito来讨论。先解释一下
1. 为什么使用Mockito来进行单元测试? 回答这个问题需要回答两个方面,第一个是为什么使用mock?mo
自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候。须要写
自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写
自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写
​【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章
1. 基本上Eclipse和Myeclipse 下的配置都差不多。 以下讲的是Myeclipse8.6下怎么配置: Myeclipse8.
我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序
JUnit基础及第一个单元测试实例(JUnit3.8) 单元测试   单元测试(unit testing) ,是指对软件
首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号