`
Tongqing-Qiu
  • 浏览: 3183 次
  • 性别: Icon_minigender_1
  • 来自: 亚特兰大
社区版块
存档分类

Java测试(2)—— Mockito

    博客分类:
  • Java
阅读更多

Mockito是一个很流行的mock测试框架。网上已经有很多的例子。我感觉很多例子,比如mock一个List,不具有代表性。这里我选了一个Strategy模式的例子,讲讲Mockito。

 

例子很简单,Someting构造时需要一个Strategy实例。会调用Strategy的doSomethingConcrete和doValidate方法。

 

public interface IStrategy {
    public void doSomethingConcrete();
    public boolean doValidate();
}

public class Strategy implements IStrategy {

    @Override
    public void doSomethingConcrete() {}

    @Override
    public boolean doValidate() {
        return false;
    }
}

public class Something {
    IStrategy strategy;

    public Something(IStrategy strategy) {
        this.strategy = strategy;
    }

    public void doSomething(){
        strategy.doSomethingConcrete();
    }

    public boolean validate() {
        return strategy.doValidate();
    }
}

 
下面我们要用mockito测试Something:

@RunWith( MockitoJUnitRunner.class )
public class TestExample {

    @Mock
    Strategy strategy;

    Something objectUnderTest;

    @Before
    public void setUp() {
        objectUnderTest = new Something(strategy);
    }

    @Test
    public void testSomething() {
        objectUnderTest.doSomething();
        verify(strategy).doSomethingConcrete();
    }

    @Test
    public void testDelegateSomething() {
        when( strategy.doValidate() ).thenReturn( true );
        boolean isValid = objectUnderTest.validate();
        assertTrue( isValid );
    }
}

 

 测试用例虽短,却包含不少信息。

 

  • 首先,可以使用@RunWith( MockitoJUnitRunner.class ) 告诉JUNIT我们要使用Mockito,而且我们使用了@Mock annotation表明我们要mock strategy的创建。
  • 在setup部分我们创建了用于测试的对象(因为这里有多于一个的测试,所以放在setup部分更简洁)。
  • 在第一个测试中,我们使用了verify,来验证straegy的doSomethingConcrete被调用。
  • 在第二个测试中,我们使用了when,thenReturn来个strategy的doValidate方法调用预设值。这样解释strategy的这个方法实现出错,而返回false,也不会影响我们对于something的测试。这也说明了mock的好处。

 

更多关于mockito的信息和例子

https://code.google.com/p/mockito/

http://eclipsesource.com/blogs/2011/09/19/effective-mockito-part-1/

 

 

分享到:
评论

相关推荐

    Java测试与与设计——从单元测试到Web测试

    《Java测试与设计——从单元测试到Web测试》这一主题深入探讨了软件开发中的关键环节:测试。在软件工程中,测试是确保软件质量、功能完整性和用户满意度的重要步骤。本文将围绕“单元测试”和“Web测试”两个核心...

    软件测试——java——ISTC2022

    下面我们将详细探讨Java软件测试的相关知识点,并结合提供的两个压缩包文件名——Calculator.zip和MoreTriangle.zip进行分析。 1. **单元测试**:在Java开发中,单元测试是验证代码模块功能是否按预期运行的基本...

    java毕业设计——基于JAVA的安全电子商务.zip

    9. **测试与调试**:项目可能涵盖了单元测试、集成测试和性能测试,使用JUnit、Mockito等工具进行。 10. **项目管理与文档**:遵循敏捷开发方法,如Scrum或Kanban,编写详细的设计文档、需求分析、用例图和类图等。...

    Java毕业设计——文章发布系统的设计与实现(论文+答辩PPT+源代码+数据库).zip

    10. **测试与调试**:JUnit是Java单元测试的工具,Mockito用于模拟对象进行测试。集成测试和性能测试也是项目开发过程中的重要环节。 11. **答辩准备**:论文和答辩PPT的制作是毕业设计的重要组成部分,需要清晰...

    Java毕业设计——CRM客户关系管理系统(论文+答辩PPT+源代码+数据库).zip

    9. **测试**:单元测试和集成测试是确保代码质量的关键步骤,JUnit和Mockito等工具可以帮助进行测试。 10. **文档和答辩准备**:论文和答辩PPT需要详尽地阐述项目的背景、目标、设计思路、实现过程以及成果展示,这...

    Java毕业设计——基于spring boot的在线选房网站设计与实现(源码+数据库).7z

    标题中的“Java毕业设计——基于spring boot的在线选房网站设计与实现”表明这是一个使用Java编程语言,并基于Spring Boot框架开发的毕业设计项目。Spring Boot是Spring生态中的一个核心组件,它简化了创建独立的、...

    Java毕业设计——基于java的保险业务管理系统的设计与实现(论文+答辩PPT+源代码+数据库).zip

    7. **测试与调试**:在开发过程中,单元测试和集成测试必不可少,JUnit和Mockito等工具可以帮助开发者进行测试。同时,使用版本控制系统如Git进行代码管理,便于协作和问题排查。 8. **答辩PPT**:这部分通常会概述...

    aglie java测试驱动开发敏捷经典(2)

    《敏捷Java测试驱动开发敏捷经典(2)》是关于软件开发方法论中的一种高效实践——测试驱动开发(Test-Driven Development, TDD)在Java语言环境下的应用。TDD是一种编程范式,它强调先编写测试用例,再编写满足这些...

    Mocks, Mockito, and Spock

    本文将详细介绍Mocks的概念、作用以及如何利用Java中最流行的模拟框架——Mockito进行单元测试。 #### 什么是Mocks? Mocks或者模拟对象是用来模拟复杂的真实对象的行为。当真实对象难以集成到单元测试中时,Mocks...

    基于Java的在线购物系统的设计与实现(源代码+系统)下载.zip

    JUnit、Mockito和Selenium等工具可能用于自动化测试。 9. **部署与运维**:最后,系统的部署和运维也是关键,可能使用持续集成/持续部署(CI/CD)工具如Jenkins,配合版本控制工具Git进行代码管理,使用Nginx或Apache...

    Java WEB——人事管理系统

    JUnit是Java的单元测试框架,而Mockito则可以帮助模拟对象,隔离测试。对于集成测试,Spring Boot Test提供了方便的测试支持,可以模拟完整的应用环境。 总的来说,Java WEB技术在人事管理系统中扮演着核心角色,...

    java项目——家具销售管理项目

    【Java项目——家具销售管理项目】是一个以Java编程语言实现的管理系统,主要目的是为了帮助家具销售企业进行日常的业务管理。这个项目包含了完整的源代码、设计文档、PPT演示以及详细的截图,使得初学者能够通过...

    Java毕业设计——基于spring boot的桌面聊天室系统设计与实现(源码+数据库).7z

    8. **测试与部署**: 开发过程中,单元测试和集成测试是必不可少的,Spring Boot支持JUnit和Mockito等测试工具。部署方面,Spring Boot应用可以被打包成可执行的JAR或WAR文件,部署在云服务器或本地服务器上。 9. **...

    单元测试之道Java版-使用JUnit

    《单元测试之道Java版-使用JUnit》是一本深入讲解如何在Java开发中运用JUnit进行单元测试的专业指南。单元测试是软件开发过程中的重要环节,它能够确保代码的正确性、可维护性和稳定性。JUnit作为Java领域最流行的...

    Java毕业设计——基于B2C的网上拍卖系统(秒杀与竞价)(论文+答辩PPT+源码+数据库).zip

    JUnit和Mockito等工具可以辅助进行单元测试,验证单个组件的功能;Spring Boot自带的Actuator模块可用于监控系统状态和性能。 最后,答辩PPT可能会涵盖系统的需求分析、设计思路、实现过程和效果展示,强调项目的...

    【Java毕业设计】毕业设计——基于Java的漏洞扫描系统.zip

    11. **测试与调试**:软件开发中,单元测试和集成测试是必不可少的,JUnit和Mockito等工具可能被用于测试代码。 这个毕业设计项目不仅展示了Java编程技能,还涵盖了网络安全、网络编程和软件工程等多个方面,对提升...

    JAVA核心知识点整理——java自学资料.rar

    15. **单元测试与持续集成**:JUnit和Mockito等工具的使用,以及持续集成工具如Jenkins的配置和使用,有助于确保代码质量。 通过深入学习这些Java核心知识点,并结合实践,开发者不仅可以提升个人技能,也能更好地...

    Practical Unit Testing with TestNG and Mockito

    本章节将介绍一种强大的测试框架——TestNG。与传统的JUnit相比,TestNG提供了更多的灵活性和功能,如参数化测试、组测试以及更复杂的依赖关系管理等。这些特性使得TestNG成为执行单元测试的理想选择之一。 - **...

    java测试的答案与详细讲解

    Java测试是软件开发过程中的重要环节,它确保代码的质量,防止缺陷在生产环境中出现。"java测试的答案与详细讲解"这个资源显然旨在帮助初学者理解并掌握Java编程中的测试技术。CDIO是一种教育理念,强调将构思...

    mock开发所用到的2个核心JAR

    Mockito 是一个流行的Java单元测试框架,它允许开发者模拟(mock)对象的行为,以便在测试中隔离被测试代码。在给定的压缩包文件中,包含的两个核心JAR文件——`mockito-all-2.0.2-beta.jar` 和 `mockito-core-2.7....

Global site tag (gtag.js) - Google Analytics