SpringBoot中使用JNnit4(一)之Mockito的使用

经过入门篇,可以编写出一个简单的测试用例。

这篇讲的是BDDMockito的使用。

BDDMockito用于测试时进行打桩处理;通过它可以指定某个类的某个方法在什么情况下返回什么样的值。

在单元测试时,如果遇到复杂的业务场景,使用多个类时,就需要用到BDDMockito。

需要打桩的对象,只能是@Mock注解的方式

package xx.xx.test;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@WebAppConfiguration
public class ApplicationTests {

    @Before
    public void init(){
        System.out.println("******测试开始");
    }
    
    @After
    public void end(){
        System.out.println("******测试结束");
    }
    
    @BeforeClass
    public static void initClass(){
        System.out.println("******测试开始初始化");
    }
    
    @AfterClass
    public static void endClass(){
        System.out.println("******测试结束初始化");
    }
}
package xx.xx.test;

import org.mockito.BDDMockito;
import org.mockito.Mock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;

import xx.xx.test.InfoService;
import xx.xx.test.UserService;

public class Test extends ApplicationTests{
    
    @Mock
    private UserService userService;
    @Autowired
    private InfoService infoService;

    @org.junit.Test
    public void add(){
        int i = userService.add("王五");
        System.out.println("Test.add.i:" + i);
        int j = infoService.update("张三");
        System.out.println("Test.add.j:" + j);
    }
    
    @Override
    public void init(){
        BDDMockito.given(userService.add("王五")).willReturn(9);
        BDDMockito.given(userService.add("")).willReturn(0);
        BDDMockito.given(userService.add(null)).willThrow(NullPointerException.class);
        System.out.println("******重写测试开始");
    }
}
package xx.xx.test;

public interface InfoService {

    Integer update(String name);
    
}
package xx.xx.test.impl;

import org.springframework.stereotype.Service;

import xx.xx.test.InfoService;

@Service("infoService")
public class InfoServiceImpl implements InfoService{
    
    public Integer update(String name){
        return 1;
    }

}
package xx.xx.test;

public interface UserService {

    Integer add(String name);
    
}

打印结果:

******测试开始

******重写测试开始
Test.add.i:9
Test.add.j:1
******测试结束
******测试结束初始化

 

BDDMockito有哪些使用场景呢?

1、可以指定打桩对象的返回值。

  1.1、使用given:

BDDMockito.given(userService.add("王五")).willReturn(9);
BDDMockito.given(userService.add("")).willReturn(0);    
BDDMockito.given(userService.add(null)).willThrow(NullPointerException.class);

    上面代码的意思是:

      当传入的参数是"王五"的时候,返回值是9。

      当传入的参数是""时,返回的值是0。

      当传入的参数是null时,抛出NullPointerException异常。

 

posted @ 2019-02-25 15:43  persistence_gc  阅读(2075)  评论(0编辑  收藏  举报