普通开发人员与软件工程师的区别
2009-04-17 17:30
323 查看
接上篇,如果需要mock一个接口,testng可以使用jmockit;对于junit使用mockito是个很好的选择。以下给个例子
maven usage:
这是一个基础的mock使用,@Mock对象只在spring bean直接引用的时候生效,如果bookService起用了事务有了代理,又或是bookService是引用了别的对象A,A再引用bookRepository,就会mock失效。
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失效。
相关文章推荐
- 普通开发人员与软件工程师的区别
- 普通开发人员与软件工程师的区别
- 普通开发人员与软件工程师的区别
- 普通开发人员与软件工程师的区别
- 普通开发人员与软件工程师的区别
- 普通开发人员与软件工程师的区别:
- 微信网页第三方登录原理 微信开放平台和公众平台的区别 1.公众平台面向的时普通的用户,比如自媒体和媒体,企业官方微信公众账号运营人员使用,当然你所在的团队或者公司有实力去开发一些内容,也可以调用公众
- 开发人员、程序员与计算机科学家三者之间的区别
- 身为软件开发人员你愿意做代码工人还是真正的软件工程师?
- 从修改文件的创建时间小谈软件开发人员与非软件开发人员的区别
- 编码人员,程序员,开发人员和软件工程师之间的差异
- Windows开发人员与.Net开发人员的区别
- H5和HTML5的区别,WEB APP未来会不会替代安卓和IOS开发人员吗?
- 软件开发人员和软件测试人员区别
- 开发人员、程序员与计算机科学家三者之间的区别
- 普通程序员与软件工程师的区别
- 前端开发人员须知html5和html4之间的区别
- 华为软件测试工程师与普通软件工程师的区别
- C#Net开发 手机网站和普通网站有什么区别
- 开发人员、程序员与计算机科学家三者之间的区别