不会测试的程序员不是好程序员(一文让你掌握JMockit的使用)

简介: 不会测试的程序员不是好程序员(一文让你掌握JMockit的使用)

文章标题

一: 前言

二: 常见的测试种类

三: JMockit的定义

四: JMockit常用知识讲解

五: JMockit实战

五: 总结

  温馨提示: 本文总共4032字,阅读完大概需要4-5分钟,希望您能耐心看完,倘若你对该知识点已经比较熟悉,你可以直接通过目录跳转到你感兴趣的地方,希望阅读本文能够对您有所帮助,如果阅读过程中有什么好的建议、看法,欢迎在文章下方留言或者私信我,您的意见对我非常宝贵,再次感谢你阅读本文。

image.png

一: 前言

image.png

image.png

二: 常见的测试种类

image.png

image.png

三: JMockit的定义

image.png

image.png

四: JMockit常用知识讲解

一: JMockit常用的知识点

image.png

image.png

二: JMockit常用API注解及区别

image.png

image.png

五: JMockit实战

(一) 引入依赖坐标(JUnit4.x及以下用户特别注意事项,如果你是通过mvn test来运行你的测试程序 , 请确保JMockit的依赖定义出现在JUnit的依赖之前,否则会报错):

 <!-- https://mvnrepository.com/artifact/org.jmockit/jmockit -->
        <dependency>
            <groupId>org.jmockit</groupId>
            <artifactId>jmockit</artifactId>
            <version>${jmockit.version}</version>
        </dependency>

(二) 构建需要测试的测试类

// 测试数据类,常规来说我们如果想调用这些方法则需要通过Mybatis或者其数据层操作组件才能够调用
// 但测试通过JMockit可以Mock一个Dao对象,来完成我们的需求
public interface UserDao {
    Integer deleteUser(Integer id);
    User getUserById(Integer id);
    List<User> getUserList();
    Integer insertUser(User user);
    Integer updateUser(User user);
    Integer test(Integer test);
}

(三) 书写测试类:

public class JmockitDemo {
    // 这是一个测试属性,使用Mock标识,表示UserDao的它的实例化,属性赋值,
    // 方法调用的返回值全部由JMockit来接管,可以通过录制行为来控制属性中的行为
    @Mocked
    UserDao userDao;
    @Test
    public void testSeletById(){
        User users = new User(19);
        /**
         * 步骤:
         *  1、录制行为-Record,设置预期值
         *  2、重放行为-replay,查看预期值
         *  3、校验行为-verification,用于查看程序执行是否跟自己设想一直
         *  注意事项:
         *  你录制多少个行为,就需要在下面播放多少个行为,否则会报错: Missing 1 invocation to(缺少预期行为的调用)
         */
        // 可以录制多个行为
        new Expectations(){
            {
              // 加上删除用户时传入12,我预期返回的结果是result后的值
                userDao.deleteUser(12);
                // result表示执行上面的行为后,预期返回的结果
                result = 123;
                userDao.getUserById(13);
                // result表示执行上面的行为后,预期返回的结果
                result = new User(12);
                userDao.getUserList();
                List<User> a= new ArrayList<>();
                User user = new User(123);
                User user1 = new User(124);
                a.add(user);
                a.add(user1);
                // result表示执行上面的行为后,预期返回的结果
                result = a;
            }
        };
        //..Assert.assertTrue(123 == userDao.deleteUser(12));
        // 重放
        Integer integer = userDao.deleteUser(12);
        System.out.println(integer);
        User userById = userDao.getUserById(13);
        System.out.println(userById.getId());
        //Assert.assertTrue(123 == userDao.getUserById(13).getId());
    }
}

(四) 执行结果:

image.png

image.png

五: 总结

不会测试的开发不是开发,平常因为程序逻辑比较复杂,想要进行单元测试的时候会麻烦,这是很多开发者不书写测试案例的主要原因,但是JMockit给我们提供了一个简便的方式来进行书写测试用例,即使多个微服务之间的测试也能够简单实现,所以,即使再复杂的逻辑,也可以通过JMockit去完成测试用例的书写,再也不用怕别人说你开发流程不规范了。


相关文章
|
6月前
|
人工智能 自然语言处理 安全
【网安AIGC专题10.19】论文3代码生成:ChatGPT+自协作代码生成+角色扮演(分析员、程序员、测试员)+消融实验、用于MBPP+HumanEval数据集
【网安AIGC专题10.19】论文3代码生成:ChatGPT+自协作代码生成+角色扮演(分析员、程序员、测试员)+消融实验、用于MBPP+HumanEval数据集
116 0
|
2天前
|
程序员 测试技术
程序员难以一次性写好代码并持续修复Bug,主要源于软件的高复杂性、需求不确定性、测试局限性和技术能力限制。
程序员难以一次性写好代码并持续修复Bug,主要源于软件的高复杂性、需求不确定性、测试局限性和技术能力限制。复杂的系统易产生意外问题,需求变化导致初始设计难完备,测试无法覆盖所有情况,而技术更新和个体能力差异也会引入错误。因此,持续调试和优化是保证软件质量的关键步骤。
5 0
|
7月前
|
Cloud Native 程序员 Go
程序员面试中的测试驱动开发:如何展示你的编程范式
程序员面试中的测试驱动开发:如何展示你的编程范式
53 0
|
7月前
|
人工智能 程序员 测试技术
AI人工智能时代,测试岗位程序员的未来:十个角度的探讨
AI人工智能时代,测试岗位程序员的未来:十个角度的探讨
100 0
|
8月前
|
NoSQL 测试技术 API
从程序员到架构师开发运维场景实战篇:一人一套测试环境
一人一套测试环境 本篇开始讲第16次架构经历:一人一套测试环境。同样,先介绍业务场景。 业务场景:测试环境何时能释放出来使用 当时,公司的基础设施使用的是虚拟机,而且还未迁移到容器。
|
9月前
|
人工智能 自然语言处理 程序员
《游戏测试》编写 Prompt 将成为程序员的必修课
《游戏测试》编写 Prompt 将成为程序员的必修课
|
12月前
|
前端开发 测试技术 程序员
程序员成长第八篇:做好测试工作
程序员成长第八篇:做好测试工作
192 0
|
12月前
|
人工智能 算法 IDE
让程序员动嘴写代码,Copilot测试新功能「嘿,GitHub!」
让程序员动嘴写代码,Copilot测试新功能「嘿,GitHub!」
193 0
|
Java 测试技术 程序员
Java程序员必须要知道的单元测试框架Junit详解
作为一名java开发者,相信你或多或少的接触过单元测试,对于测试来讲它是一门能够区分专业开发人员与业余开发人员的重要学科,这篇文章将对java中最常见的一个单元测试框架junit进行一个梳理和讲解。如果你之前没接触过,那么就通过这篇文章进行一个学习。如果你是一个测试老手,我也希望这篇文章能够加深你的印象。
153 0
Java程序员必须要知道的单元测试框架Junit详解
|
程序员 测试技术 Go
我的Go+语言初体验——语法验证/性能测试篇(直男程序员的真实体验2)
我的Go+语言初体验——语法验证/性能测试篇(直男程序员的真实体验)

热门文章

最新文章