多平台统一管理软件接口,如何实现多平台统一管理软件接口
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~