随笔 - 301  文章 - 2  评论 - 16  阅读 - 34万

关于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);
     }
 });

  

 

posted on   Code2020  阅读(429)  评论(0编辑  收藏  举报
编辑推荐:
· .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语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示