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異常。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM