PowerMock學習之PoweMock的入門(二)

前言

在上一篇《PowerMock學習之PoweMock的入門(一)》文章中,已經簡單說起一些關於powermock的用法,可是入門還未完,我還要堅持把它學習並堅持更新到博客中。html

Mock中的API

ps:僅更新此次案例中使用的api說明。數據庫

  • Powermockito.mock():主要是經過class建立對應的mock對象,不一樣於easymock等使用proxy(代理)的方式建立,而是在運行過程當中動態修改class字節碼文件的形式來建立。
  • Do..when..then:能夠按照英文的意思理解,就是在何時,作了什麼事,而後怎麼樣了。
  • Verify:能夠理解爲驗證無返回值時候,查看是否被調研。

進階入門

接着我再來一個稍稍有點難度的需求,須要建立學生操做。api

須要在dao和service加入兩個方法以下:單元測試

dao中加入:學習

    /**
     * create student
     *
     * @param student
     */
    public void createStudent(Student student) {
        throw new UnsupportedOperationException();
    }

service中加入:測試

    /**
     * create student
     * @param student
     */
    public void createStudent(Student student) {
        studentDao.createStudent(student);
    }

若是針對createStudent寫單元測試,確定是錯誤的,很明顯數據庫資源不存在,上個案例已經說了,這裏不作贅述,重點是此次是驗證無返回值類型的測試,即void,那該怎麼測試呢?spa

mock後的createStudent方法,實際什麼都不會作,仔細想下,咱們調用createStudent方法,按照用例測試,也無非就是調用成功或者失敗,可先假設調用成功或失敗.。代理

而後,使用mock中verify這個方法便可完成驗證,具體示例代碼以下:code

@Test
    public void testCreateStudentWithMock() {
        StudentDao studentDao = PowerMockito.mock(StudentDao.class);
        Student student=new Student();
        PowerMockito.doNothing().when(studentDao).createStudent(student);
        StudentService studentService = new StudentService(studentDao);
        studentService.createStudent(student);
        Mockito.verify(studentDao).createStudent(student);
    }

再次運行就可以經過,其中Mockito.verify主要用來校驗被mock出來的對象中的某個方法是否被調用。htm

到此關於mock的入門就結束了。

相關文章
相關標籤/搜索