Java mockito单元测试实现过程解析

网友投稿 292 2022-11-24


Java mockito单元测试实现过程解析

待测试的服务接口:

public interface ItemService {

String getItemNameUpperCase(String itemId);

}

预览

待测试的服务的实现类:

@Service

public class ItemServiceImpl implements ItemService {

@Resource

private ItemRepository itemRepository;

@Override

public String getItemNameUpperCase(String itemId) {

Item item = itemRepository.findById(itemId);

if (item == null) {

return null;

}

return item.getName().toUpperCase();

}

}

// 测试用例

import org.junit.Before;

import org.junit.Test;

import org.mockito.InjectMocks;

import org.mockito.Mock;

import org.mockito.MockitoAnnotations;

import static org.assertj.core.api.Assertions.assertThat;

import static org.mockito.Mockito.*;

public class ItemServiceTest {

@Mock

private ItemRepository itemRepository;

@InjectMocks

private ItemServiceImpl itemService;

@Before

public void setUp(){

MockitoAnnotations.initMocks(this);

}

/**

* 如果从存储层查询到一个Item, 那么它的 name 将被转化为大写.

*/

@Test

public void shouldReturnItemNameInUpperCase() {

// Given

Item mockedItem = new Item("it1", "Item 1", "This is item 1", 2000, true);

when(itemRepository.findById("it1")).thenReturn(mockedItem);

// When

String result = itemService.getItemNameUpperCase("it1");

// Then

verify(itemRepository, times(1)).findById("it1");

assertThat(result).isEqualTojOLMnow("ITEM 1");

}

}

Mockito 的更多高级用法请参考官方网站和框架配套 wiki。如果需要 mock 静态方法、私有函数等,可以学习 PowerMock, 拉取其源码通过学习单元测试来快速掌握其用法。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MyBatis Plus 入门使用详细教程
下一篇:Java HashMap实现原理分析(一)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~