第一次使用Mockito进行测试

第一次使用Mockito进行测试,记录一下

package com.hxt.account.mpos.service.impl;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.runners.MockitoJUnitRunner;
import org.mockito.stubbing.Answer;

import com.hxt.account.exception.RegisterException;
import com.hxt.account.mpos.service.MposRegisterService;
import com.hxt.account.persistence.MerchantInfo;
import com.hxt.account.persistence.UserInfo;
import com.hxt.account.repository.MerchantInfoRepository;
import com.hxt.account.repository.UserInfoRepository;
import com.hxt.account.service.RegisterService;
import com.hxt.common.internal.UserType;
import com.hxt.common.internal.exception.BlankArgumentException;
import com.hxt.id.generator.service.MerchantInfoIdGenerator;
import com.hxt.id.generator.service.UserInfoIdGenerator;

@RunWith(MockitoJUnitRunner.class)
public class MposRegisterServiceImplTest {

    @Mock
    private RegisterService registerService;

    @Mock
    private UserInfoRepository userInfoRepository;

    @Mock
    private UserInfoIdGenerator userInfoIdGenerator;

    @Mock
    private MerchantInfoIdGenerator merchantInfoIdGenerator;

    @Mock
    private MerchantInfoRepository merchantInfoRepository;

    @InjectMocks
    MposRegisterService mposRegisterService = new MposRegisterServiceImpl();

    @Test
    public void testRegisterSuccess() throws RegisterException, BlankArgumentException {

        when(registerService.userExists(isA(String.class))).thenReturn(false);
        when(userInfoRepository.save(isA(UserInfo.class))).thenAnswer(new Answer<UserInfo>() {

            @Override
            public UserInfo answer(InvocationOnMock invocation) throws Throwable {

                UserInfo info = new UserInfo();
                info.setUserId("001");
                return info;
            }
        });
        when(userInfoIdGenerator.generate(isA(UserType.class))).thenReturn("001");
        when(merchantInfoIdGenerator.generate()).thenReturn("0001");
        when(merchantInfoRepository.save(isA(MerchantInfo.class))).thenAnswer(new Answer<MerchantInfo>() {

            @Override
            public MerchantInfo answer(InvocationOnMock invocation) throws Throwable {

                MerchantInfo info = new MerchantInfo();
                info.setMerchantId("0001");
                return info;
            }
        });
        String merchantId = mposRegisterService.register("13100001111", "123456");
        verify(registerService).userExists(isA(String.class));
        verifyNoMoreInteractions(registerService);
        verify(userInfoRepository).save(isA(UserInfo.class));
        verifyNoMoreInteractions(userInfoRepository);
        verify(userInfoIdGenerator).generate(isA(UserType.class));
        verifyNoMoreInteractions(userInfoIdGenerator);
        verify(merchantInfoIdGenerator).generate();
        verifyNoMoreInteractions(merchantInfoIdGenerator);
        verify(merchantInfoRepository).save(isA(MerchantInfo.class));
        verifyNoMoreInteractions(merchantInfoRepository);
        assertTrue("merchant info id is not correct", merchantId.equals("0001"));
    }

    @Test(expected = BlankArgumentException.class)
    public void testRegisterThrowBlankArgumentException() throws BlankArgumentException, RegisterException {

        mposRegisterService.register("", "");
    }

    @Test(expected = RegisterException.class)
    public void testRegisterThrowRegisterException() throws RegisterException, BlankArgumentException {

        when(registerService.userExists(isA(String.class))).thenReturn(true);
        mposRegisterService.register("13100001111", "123456");
        verify(registerService).userExists(isA(String.class));
        verifyNoMoreInteractions(registerService);
    }

}

that‘s all

时间: 2024-08-12 07:05:01

第一次使用Mockito进行测试的相关文章

在开发中使用Mockito进行测试

关于单元测试的一些问题 当我们Javaweb项目中编写单元测试的时候,通常会面临一个普遍的问题:需要测试的类会有很多依赖,而这些依赖的类或者对象又会有很多别的依赖,导致我们在写单元测试的时候几乎需要把完整的业务体系代码编写出来,而在单元测试中将这这些个依赖完整的构建出来是一件很困难的事情,通常这个时候,我们会想到把里面一些需要的依赖"Mock"出来. Mock及使用Mockito Mock,从单词层面来讲师仿制和模拟,在软件开发和测试中通常是指模拟对象. 简单地说就是对测试的类所依赖的

11.1第一次相似度算法测试结果

测试文件在result下面, 1.word2vec还需要丰富训练数据,去噪音,加入博客,新增加预处理的方法. 2.建立评估准确率和召回率的机制 3.去除停用词是不是去多了,增加原文打印的结果 4.原文521条,最终应跑出(521*520)/2对 原文地址:https://www.cnblogs.com/yjybupt/p/9887268.html

(4.5.4)Android测试TestCase单元(Unit test)测试和instrumentationCase单元测试

Android单元和instrumentation单元测试 Developing Android unit and instrumentation tests Android的单元测试是基于JUnit的.可分为: 1.本地单元测试 - 可以在JVM上运行测试(速度快,优先考虑). 2.Instrumented单元测试 - 需要Android系统 Android的Gradle插件支持在JVM上执行Andr??oid单元测试.它使用特殊版本的android.jar(也称为 Android mocka

webSocket ws协议测试

最近公司做了个直播的项目,需要用到Websocket进行通信,因而需要对socket最大连接数及稳定性进行测试.当初得到这一需求的时候,唯一想到的就是jmeter,从百度下载相应的socket依赖jar包,开始研究(毕竟第一次做这方面的测试),担心单台压力源不够用,又整了个分布式,不过最终发现Jmeter并不适合测试Socket的最大连接数,于是调整了思路,寻找其他方法,功夫不费有心人,最后发下了一款不错的socket测试小工具(点击下载)是一个.exe文件,使用该工具可以很容易的实现socke

(译文)A/B测试从入门到熟练指南

(译文)A/B测试从入门到熟练指南 原文地址: http://www.smashingmagazine.com/2014/07/11/roadmap-to-becoming-an-a-b-testing-expert/ A/B测试,也叫做分离测试(也有叫做对比测试的),这是一种针对观察页面布局相似的两个不同版本着陆页的转化率, 来进行对比的点蚀测试方法(抽样测试法). A/B测试是通过观察和测试用户使用过程,找到最快捷引导用户到目标页面的着陆页版本.比如注册或者订阅网站信息的引导页面. 测试的内

练习5.1更新——四则运算 测试与封装

1 package ppackage; 2 import java.util.Random; 3 import java.util.Scanner; 4 import java.util.regex.Pattern; 5 6 7 public class Colc { 8 public int sighfh,fuhaosl; 9 public float sighsz1,sighsz2,answer2,sum2=0,sum3=0; 10 public float []sighsz=new flo

单元测试--Junit和Mockito

说到测试,大家都不会陌生,从我们开始学习编程开始,就知道测试.测试和编程就像两个双胞胎似的,可是,显然我们更钟情于双胞胎中的一个--编程.一些人可能对测试了然于胸,却匮乏于行动,一些人也可能对测试只是闻其名不知其意.下面这篇博文就是给大家在零基础上讲解一下Java中单元测试的使用. ---------------------------什 么 是-----------------------------    首先来说说,究竟什么是单元测试?单元测试是指对软件中的最小可测试单元进行检查和验证.对

实践作业1:测试管理工具实践(小组作业)每日任务记录1

记录日期:2017/11/13 会议主题:高级软件测试与质量的实践作业1的主题与分工 会议成员:王晨懿.余晨晨.郑锦波.杨潇.侯欢.汪元 会议记录人:侯欢 会议内容:今天是我们小组第一次例会,这次会议主要是对于第一次实践作业的测试管理工具实践的主题的确立与分工.我们组选择的测试管理工具是禅道.说起禅道,熟悉软件测试的小伙伴应该不会陌生,因为直到2016年公司常用测试管理工具统计,禅道仍旧以34%的比例高居榜首.我们组的具体分工如下:工具手册的撰写---王晨懿/于晨晨:视频制作---郑锦波/杨潇:

SystemVerilog搭建测试平台---第一章:验证导论

作为一名验证工程师,你应该尽可能细致深入地去检验设计,并提取出所有可能的漏洞.在流片之前每发现一个漏洞就意味着最终到顾客手里就会少一个漏洞.接下来我将更新一个系列的文章来讲述SystemVerilog这门验证语言,希望能够学有所长.本章内容就做一个大体的介绍,有很多东西也许解析不到位,希望以后能修改补充. 在熟悉Verilog语言的基础上,我希望能够学习System Verilog硬件验证语言(Hardware Verification Language,HVL).相比于硬件描述语言(HDL),