`
chenjingbo
  • 浏览: 460048 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mockito mock void 方法(mark帖)

 
阅读更多

package com.taobao.ju.c2b.facade.manager.impl;

import com.taobao.ju.c2b.facade.domain.CommentQuery;
import com.taobao.ju.c2b.follow.domain.CommentBO;
import com.taobao.ju.common.manager.ManagerException;
import com.taobao.matrix.comment.domain.*;
import com.taobao.matrix.comment.enumconstants.ContentType;
import com.taobao.matrix.comment.enumconstants.EnumPubComStatus;
import com.taobao.matrix.comment.service.SnsCommentCoreService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;

import java.util.Arrays;

import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;
import static org.mockito.Matchers.any;

/**
 * User: zhenghui
 * Emal: zhenghui.cjb@taobao.com
 * Date: 9/25/12  1:13 PM
 *
 */
@RunWith(MockitoJUnitRunner.class)
public class CommentManagerImplTest {

    @InjectMocks
    private static CommentManagerImpl commentManager = new CommentManagerImpl();

    @Mock
    private SnsCommentCoreService snsCommentCoreService;

    private static final int typeID = 2012;
    
    private static final int totoleNum = 2013;
    
    private static final int readcount = 2014;
    
    private static final long userId = 2015l;

    static {
        commentManager.setC2bTypeId(typeID);
    }

    @Test
    public void testGetC2bTypeId() throws Exception {
        Assert.assertTrue(commentManager.getC2bTypeId() == typeID);
    }

    @Test
    public void testQueryComment4User() throws Exception {
        Mockito.when(snsCommentCoreService.queryCommentToMe(any(MyCommentListQuery.class))).thenReturn(prepareQuery());
        CommentQuery query = commentManager.queryComment4User(new CommentQuery());
        Assert.assertTrue(query.getTotalItem() == totoleNum);
        Assert.assertTrue(query.getJucCommentVOs().size() == 1);
    }

    @Test(expected = ManagerException.class)
    public void testQueryComment4User_Exception() throws Exception {
        when(snsCommentCoreService.queryCommentToMe(Matchers.any(MyCommentListQuery.class))).thenThrow(new RuntimeException("test"));
        commentManager.queryComment4User(new CommentQuery());
    }

    @Test
    public void testGetNotReadCommentCount() throws Exception {
        Mockito.when(snsCommentCoreService.queryCommentNotReadCount(eq(userId),Matchers.eq(typeID),Matchers.any(ContentType.class))).thenReturn(preprareUnReadCommentResult());
        int count = commentManager.getNotReadCommentCount(userId,ContentType.TOTAL);
        Assert.assertTrue(count == readcount);
    }

    @Test(expected = ManagerException.class)
    public void testGetNotReadCommentCount_Exception() throws Exception {
        Mockito.when(snsCommentCoreService.queryCommentNotReadCount(eq(userId),Matchers.eq(typeID),Matchers.any(ContentType.class))).thenThrow(new RuntimeException("test"));
        commentManager.getNotReadCommentCount(userId, ContentType.TOTAL);
    }

    @Test
    public void testPublishComments() throws Exception {
        when(snsCommentCoreService.publishComment(any(PublishCommentParam.class))).thenReturn(preparePublishCommentResult(true));
        CommentBO commentBO = new CommentBO();
        commentBO.setUserId(userId);
        boolean success = commentManager.publishComments(commentBO);
        Assert.assertTrue(success);
        when(snsCommentCoreService.publishComment(any(PublishCommentParam.class))).thenReturn(preparePublishCommentResult(false));
        success = commentManager.publishComments(commentBO);
        Assert.assertFalse(success);
    }

    @Test(expected = ManagerException.class)
    public void testPublishComments_Exception() throws Exception {
        when(snsCommentCoreService.publishComment(any(PublishCommentParam.class))).thenThrow(new RuntimeException("test"));
        CommentBO commentBO = new CommentBO();
        commentBO.setUserId(userId);
        commentManager.publishComments(commentBO);
    }

    @Test
    public void testClearCommentNotReadCount() throws Exception {
        commentManager.clearCommentNotReadCount(userId,ContentType.COMMENT);
    }

    @Test(expected = ManagerException.class)
    public void testClearCommentNotReadCount_Exception() throws Exception {
//        when(snsCommentCoreService.clearCommentNotReadCount(eq(userId),eq(typeID),any(ContentType.class))).thenThrow(new RuntimeException("test"));
        Mockito.doThrow(new RuntimeException("test")).when(snsCommentCoreService).clearCommentNotReadCount(userId,typeID,ContentType.COMMENT);
        commentManager.clearCommentNotReadCount(userId,ContentType.COMMENT);
    }

    private MyCommentListQuery prepareQuery(){
        MyCommentListQuery query = new MyCommentListQuery();
        query.setTotalItem(totoleNum);

        MyCommentInfoQuery mciq = new MyCommentInfoQuery();
        query.setMyCommentList(Arrays.asList(mciq));
        return query;
    }
    
    private UnReadCommentResult preprareUnReadCommentResult(){
        UnReadCommentResult result = new UnReadCommentResult();
        result.setTotalCommentUnReadCount(readcount);
        return result;
    }

    private PublishCommentResult preparePublishCommentResult(boolean success){
        PublishCommentResult result = new PublishCommentResult();
        if(success){
            result.setStatus(EnumPubComStatus.SUCCESS);
        } else {
            result.setStatus(EnumPubComStatus.EMPTY);
        }
        return result;
    }
}
 
分享到:
评论

相关推荐

    spring集成TestNG与Mockito框架单元测试方法

    在测试中,你可以使用Mockito的`@Mock`和`@InjectMocks`注解来创建模拟对象并注入到被测试对象中。例如,如果你有一个`UserService`依赖于`UserRepository`,可以这样创建模拟对象: ```java import org.mockito....

    Mocks, Mockito, and Spock

    2. **手动创建**:使用`mock()`方法来创建模拟对象。例如:`BookDao mockedBookDao = mock(BookDao.class);` 这两种方式都会为指定类的所有方法提供默认行为。 #### 初始化注解Mocks 为了确保使用注解声明的Mocks...

    Mockito常用方法.pdf

    以下将详细介绍 Mockito 的常用方法和应用场景。 Mockito 简介 Mockito 是一个开源的模拟测试框架,用于 isolating 依赖项并使测试更快速、更可靠。Mockito 提供了许多实用的方法来模拟对象的行为,以便在测试中 ...

    Mockito常用方法.docx

    Mockito常用方法 Mockito是Java的mock测试框架,用于 isolating dependencies in unit tests。它提供了许多有用的方法来模拟对象的行为。 Mockito 简单教程官网 Mockito的官方网站提供了详细的文档和教程,帮助...

    Mockito的重要入门资料

    - **创建Mock对象**:通过`@Mock`注解或`Mockito.mock()`方法创建。 - **Stubbing**:定义mock对象的行为。例如,使用`when(...).thenReturn(...)`来规定当调用某个方法时返回特定值。 #### ArgumentMatcher(参数...

    Mockito-Programming-Cookbook

    - 使用 `Mockito.mock()` 方法快速创建模拟对象。 - 示例:`MyClass mockObject = Mockito.mock(MyClass.class);` 8. **模拟返回 void 的方法**: - 对于返回 void 的方法,可以使用 `doNothing()` 或 `doThrow...

    springboot + mockito 使用示例代码-原创

    import org.mockito.Mock; import org.mockito.MockitoAnnotations; import static org.mockito.Mockito.*; import static org.junit.jupiter.api.Assertions.*; class UserServiceTest { @InjectMocks private...

    EasyMock与Mockito 使用

    - Mockito的`verify`方法可以检查方法是否被正确调用,而不只是调用次数。 - `@Mock`注解可以和`@InjectMocks`一起用于自动注入依赖。 - `doAnswer`和`doThrow`可以自定义模拟方法的行为,比如抛出异常或执行特定...

    Spring Boot单元测试中使用mockito框架mock掉整个RedisTemplate的示例

    今天小编就为大家分享一篇关于Spring Boot单元测试中使用mockito框架mock掉整个RedisTemplate的示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Mockito+Junit5测试方法实践

    内容概要:参考Mockito官方API文档,实践框架每个特性。 适合人群:Mockito入门人员以及想全面熟悉Mockito特性的人员,做到了开箱即用。 能学到什么:“Mockito 4.6.0 + Junit 5”的组合编程。 使用建议:使用前安装...

    Introduction-to-Mock-with-Mockito-:Mockito的Mock简介

    Mockito的模拟/存根介绍 本项目的目的是介绍IntelliJ IDEA中Mockito框架和测试模板的较不常见的功能。 我将从模拟/存根的基本内容... at domain.a_missing_mock_for_organisation.ItemServiceTest.shouldIssueAnInvoic

    Mockito入门

    2. **创建Mock对象**:使用`Mockito.mock(Class<T> classToMock)`方法创建mock对象。例如,如果你有一个名为`MyClass`的类,你可以创建它的mock对象如下:`MyClass myMock = Mockito.mock(MyClass.class)`。 3. **...

    mockito-1.9.5.zip

    Mockito 通过 `mock()` 方法创建模拟对象,然后在测试方法中设置其行为。使用 `verify()` 验证模拟对象的方法调用,确保测试代码覆盖了所有关键路径。 4. **mockito-all-1.9.5.jar**: 这是Mockito库的JAR文件,...

    mockito中文文档.zip

    Mockito 是一个流行的 Java 单元测试框架,用于模拟(mock)对象,使得开发者可以在测试代码中隔离依赖,专注于测试单个组件的行为。TDD(Test-Driven Development,测试驱动开发)是它常被结合使用的一种开发模式,...

    Mockito Cookbook

    JUnit等测试框架提供了断言方法,而在Mockito中,验证过程也常常伴随着断言,以确保mock对象的行为正确。 4. ** stubbing(预设行为)**:预设行为是指为mock对象的某个方法定义返回值或抛出异常。这样在测试时,当...

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

    3. **Verification**:Mockito提供了一种验证机制,用于检查在测试过程中,mock对象的方法是否按照预期被调用。这有助于确保被测试代码的正确性。 4. **Matchers**:Mockito支持使用Hamcrest库的matchers,这使得...

    mock 介绍及原理,前后端 mock方法

    Mock 介绍及原理,前后端 Mock 方法 Mock 是一种测试技术,用于模拟某些不容易构造或者不容易获取的对象,以便测试。在实际工作中,可能会遇到依赖接口不通、异常数据难模拟、单元测试干扰等问题,引入 Mock 可以...

    用JUnit测试void方法

    2. **创建对应的验证方法(verify方法)**:编写一个与`void`方法对应的新方法,这个方法接收相同的参数,但返回`flag`的值。这个`verify`方法在测试时会被调用,用来检查`void`方法的执行结果。例如,可以创建一个...

    power mockito学习资料

    PowerMockito是一个强大的Java单元测试框架,它扩展了其他如EasyMock等mock库的功能,能够模拟静态方法、构造函数、final类和方法、私有方法,甚至静态初始化器。这使得开发者能够在单元测试中隔离被测试对象,不受...

Global site tag (gtag.js) - Google Analytics