关于Mockito学习的一点自己的理解
1. 如果要使用@Mockito ,则要加入MockitoAnnotations.initMocks
MockitoAnnotations.initMocks
放在 junit 的 @Before
注解修饰的函数中更合适。
MockitoAnnotations.initMocks 的一个替代方案是使用 MockitoJUnitRunner 。
2.一些注意点:
1.Dao层测试,直接用一些模拟数据,插入数据库,看看测试是否成功
2.Service主要来测试缓存的
3. web直接用Mock进行来测试
3. 使用方式:
方式一:
@Test public void queryx() { String pin = "testPin"; String ip = "127.0.0.1"; when(XXXJsf.getPreSwitch(any(XXXXReq.class))).thenAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { GenericResult<XXXX> genericResult = new GenericResult<>(); XXXX xjkCashierTradeRes = new xxx(); //符合切量 XXXXXRes.setxxxx(true); //成功 genericResult.setSuccess(true); genericResult.setCode("0000"); genericResult.setValue(XXXX); return genericResult; } });
下面一定要写调用的具体接口
ResponseVo<XXXXX> responseVo = XXXXX.XXXX(pin, "127.0.0.1");
log.info("XXXXX.res:{}", GsonUtils.toJson(responseVo));
方式二:
调用的时候会直接抛出异常信息,如果想让起抛出异常信息,则直接使用这个方式
@Test public void testMktSaleOrder() throws Exception { String message = "XXXXX"; try {
//注意下面两行代码的位置不能交换,必须先去定义调用就去抛出异常信息 doThrow(RuntimeException.class).when(XXXXJSF).asynxxxxeStock(any(XXXXckReq.class)); XXXXX.onMessage(message); } catch (Exception e) { } }
方式三:
@Before public void setup() { doReturn(1).when(XXXXXDao).insert(any(XXXXXXPo.class)); doReturn(1).when(xxxDao).updateByxxxxId(any(XXXXXXPo.class)); when(scoreXXXXDao.queryByIdxxxx(anyString())).then(invocationOnMock -> this.XXXXPo()); when(scorXXXXDao.queryByConditionXXXX(any(XXXXXPo.class))).then(invocationOnMock -> { Page page = new Page(); page.add(this.xxxxxPo()); return page; }); }
方式四:
1 2 3 4 5 6 | <em id= "__mceDel" > doReturn(216322040L).when(activityDao).insert(any(SaleActivity. class ));<br> doReturn(230L).when(activityRewardStockDao).insert(any(SaleActivityRewardStock. class )); doNothing().when(activityRewardDao).insert(any(SaleActivityReward. class )); doReturn(40L).when(activityRewardStockDao).insert(any(SaleActivityRewardStock. class )); doNothing().when(activityRewardEnumDao).insert(any(SaleActivityRewardEnum. class )); doNothing().when(bizCacheService).saveActivityInfoToCache(any(RichSaleActivity. class )); doNothing().when(activityDao).update(any(SaleActivity. class ));<br></em> doReturn( new ArrayList<SaleActivityRuleConfig>()).when(activityRuleConfigDao).queryRuleList(); |
方式五:
1 2 3 4 5 6 7 | when(bizCacheService.cacheGetActivity(anyLong())).then( new Answer<SaleActivity>() { @Override public SaleActivity answer(InvocationOnMock invocationOnMock) throws Throwable { String saleActivityStr = "{\"activityEnum\":\"020302\",\"activityName\":\"4月-白条网易严选权益卡\",\"appShow\":1,\"auditor\":\"sunweiting\",\"auditorTime\":1553778669000,\"budgetNum\":\"SC00190306899\",\"createTime\":1553754196000,\"creator\":\"gaoya39\",\"dayFinishTime\":946742399000,\"dayPartiCount\":1,\"dayStartTime\":946656000000,\"detail\":\"\",\"finishTime\":1555343999000,\"id\":314135082,\"partiCount\":1,\"phone\":\"18301232918\",\"priority\":1,\"startTime\":1554048000000,\"status\":4,\"updateTime\":1555344000000}" ; return JSON.parseObject(saleActivityStr, SaleActivity. class ); } }); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构