`

Mockito异常测试实例

阅读更多

Mockito异常测试实例:

package com.bijian.study;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import org.junit.Assert;
import org.junit.Test;

import org.mockito.Mockito;

public class MockitoDemo {

    @Test
    public void mockitoTest() throws Exception {
        
        Service service = new Service();
        Dao dao = mock(Dao.class);// 相当于 new一个dao的模拟类
        service.setDao(dao);
        when(dao.update("1", "2")).thenReturn(2);
        Assert.assertEquals(2, service.update("1", "2"));

        // 方法的参数可以匹配任意值,Mockito.anyXXX() 和任意类 Mockito.any(clazz)
        when(dao.update(Mockito.anyString(), Mockito.any(String.class))).thenReturn(3);
        // 不能将确定值和模糊值混搭,这样会报错
        // when(dao.update("3", Mockito.any(String.class))).thenReturn(3);
        Assert.assertEquals(3, service.update("3", "4"));

        // 下面模拟抛异常
        when(dao.update("3", "4")).thenThrow(new RuntimeException());
        Assert.assertEquals(-1, service.update("3", "4"));

        // void方法抛异常
        Mockito.doThrow(new RuntimeException("测试")).when(dao).voidTest();
        try {
            service.voidTest();
        } catch (Exception e) {
            Assert.assertEquals("测试", e.getMessage());
        }

        // 不能模拟抛Exception类
        //when(dao.update("3", "4")).thenThrow(new Exception());

        // 同一方法不能多次模拟抛异常
        //when(dao.update("3", "4")).thenThrow(new NullPointerException());
        //Assert.assertEquals(-1, service.update("3", "4"));
    }
}

class Service {
    private Dao dao;

    public void setDao(Dao dao) {
        this.dao = dao;
    }

    public void voidTest() {
        dao.voidTest();
    }

    public int update(String a, String b) {
        int i = 0;
        try {
            i = dao.update(a, b);
        } catch (Exception e) {
            i = -1;
        }
        return i;
    }
}

class Dao {
    public void voidTest() {
    }

    public int update(String a, String b) {
        return 1;
    }
}

 

分享到:
评论

相关推荐

    Java mockito单元测试实现过程解析

    在测试类 `ItemServiceTest` 中,我们使用 `@Mock` 注解创建了一个 `ItemRepository` 的 mock 对象,并使用 `@InjectMocks` 注解创建了 `ItemServiceImpl` 的实例。`@Before` 方法用于初始化 mock 对象。这样,当...

    mockito单元测试

    ### Mockito 单元测试详解 #### 一、引言 在软件开发过程中,编写单元测试是一种常见的实践方式,用于确保代码质量与功能正确性。然而,在处理复杂的依赖关系时,传统的方法可能会遇到难题,比如当一个类依赖于多...

    PowerMock+Mockito-junit测试套件1.6.3版本

    PowerMock和Mockito是两个非常流行的Java单元测试框架,结合JUnit,它们可以提供强大的测试能力。在本文中,我们将深入探讨"PowerMock+Mockito-junit测试套件1.6.3版本"中的关键概念、功能和使用方法。 **PowerMock...

    Junit4.12+mockito

    此外,JUnit 提供了异常测试、固定延迟执行、测试套件等高级功能,有助于全面地测试代码。 **Mockito** 是另一个重要的工具,它是一个模拟(Mocking)库,允许开发者在测试中创建并控制对象的行为,尤其是那些难以...

    android单元测试实例一

    2. **网络请求模拟**:如果登录过程涉及网络通信(如向服务器发送请求验证凭据),我们可以使用Mockito或者OkHttp的MockWebServer来模拟网络响应,确保即使在没有网络连接的情况下也能进行测试。 3. **异步操作**:...

    Mockito Cookbook - Packt

    - **主要功能**:本书提供了大量的实例来展示Mockito功能的实际应用,不仅限于文档介绍,还包括如何高效地使用Mockito进行单元测试的方法。 - **应用场景**:适用于JUnit、PowerMock、TestNG等流行单元测试框架。 #...

    Packt Publishing Mastering Unit Testing Using Mockito and JUnit (2014)

    - **命名测试实例**:使用 `@Parameters` 注解中的 `name` 属性为每个测试实例指定描述性的名称。 - **设置超时**:通过 `@Timeout` 注解指定测试方法的最大执行时间,超过此时间测试将失败。 #### 三、JUnit 规则 ...

    junit4单元测试实例

    本篇文章将深入探讨JUnit4的单元测试实例,帮助你更好地理解和应用这个工具。 一、JUnit4简介 JUnit4相较于之前的版本,引入了注解(Annotation)机制,极大地简化了测试用例的编写。例如,`@Test`注解用于标记测试...

    使用mockito玩转junit test

    Mock对象是模拟的类实例,它们可以替代真实的依赖,避免在测试中实际调用外部系统或服务。Stub则是预先定义的返回值或行为,用于控制mock对象的响应。当我们使用Mockito创建mock对象时,可以指定它对特定方法调用的...

    mockito-sample:在JUnit测试用例中如何使用Mockito创建模拟对象的快速示例

    Mockito 是一个流行的 Java 单元测试框架,它允许开发者创建模拟对象来隔离被测试代码,以便更好地控制测试环境。这个“mockito-sample”项目提供了一个快速示例,展示了如何在 JUnit 测试用例中使用 Mockito。让...

    Practical-Unit-Testing-with-TestNG-and-Mockito_examples

    《单元测试实战:TestNG与Mockito应用解析》 单元测试是软件开发过程中的重要环节,它能够确保代码的正确性、稳定性和可维护性。TestNG和Mockito是两个非常流行的Java单元测试工具,它们提供了强大的功能和灵活的...

    powermock-mockito-junit-1.6.3.zip 当前最新版

    JUnit支持各种断言方法,用于验证测试代码的预期结果,同时也提供了异常处理和测试分组等功能,便于组织和管理测试用例。 在这个压缩包中,你可能会找到以下内容: 1. PowerMock的核心库:这可能包括`powermock-...

    android-test-demo:使用 Dagger、Mockito、Junit 进行 Android 测试

    它提供了断言方法来验证代码的预期行为,并支持测试套件、参数化测试、异常测试等多种测试模式。在`android-test-demo`中,JUnit被用来编写针对单个组件或方法的单元测试。 3. **Mockito**:Mockito是一个流行的...

    《JAVA项目实例源码》

    最后,源码可能还包含了单元测试和集成测试的实践,如JUnit和Mockito的使用,这对于确保代码质量和可维护性非常重要。 总而言之,《JAVA项目实例源码》提供了一个全面的学习平台,通过分析和理解这些源码,我们可以...

    Junit 入门与提高实例代码

    此外,Junit支持异常测试,通过`assertThrows`或`expected`属性,我们可以测试方法是否抛出了预期的异常类型。这对于验证业务逻辑中的错误处理和边界条件非常有用。 为了组织和管理测试用例,可以创建测试类继承自`...

    SSM框架项目实例

    8. **单元测试与集成测试**:为了确保代码质量,系统应该包含针对各模块的单元测试和对整个流程的集成测试,使用JUnit、Mockito等工具进行测试,确保功能的正确性。 9. **部署与运行**:项目可能使用Tomcat、Jetty...

    practical-unit-testing-solutions:Tomek Kaczanowski撰写的“使用JUnit和Mockito进行实践单元测试”一书中的练习解决方案

    JUnit支持注解、测试套件、异常测试等多种特性,使得测试代码更加简洁且易于维护。在本书中,读者将学习如何设置断言、创建测试类和方法,以及如何利用JUnit的@Test注解来定义测试用例。 Mockito是一个模拟框架,它...

    股票交易web系统消息实例

    JUnit和Mockito等工具可以帮助进行测试驱动开发,确保代码质量。 总结起来,股票交易Web系统中的消息实例扮演着至关重要的角色。它们不仅涉及用户交互,还直接影响系统的性能、安全和稳定性。理解并有效利用消息...

    CXF结合Spring项目实例

    这里的测试可能使用了JUnit或Mockito等测试框架,模拟不同的输入和环境条件,对CXF服务的各种场景进行验证。通过测试,开发者可以发现并修复问题,提高服务的质量和稳定性。 在实际应用中,一个典型的CXF结合Spring...

Global site tag (gtag.js) - Google Analytics