Использование PowerMock обучения (е) Якобы финал

Ложная Final

mockfinal условно говоря, является относительно простой, используя powermock, чтобы проверить использование конечного модифицированного метода или класса, относительно простого, вызовите часть интерфейса, или дао обслуживания вызовов.

Для интерфейса и сцена не будет разработать здесь, это особенно просто.

уровень услуг

примеры конкретного кода следующим образом:

пакет com.rongrong.powermock.mockfinal; 

/ ** 
 * @author Rongrong 
 * @version 1,0 
 * @date 2019/11/27 21:29 
 * / 
общественный  класс StudentFinalService { 

    частное StudentFinalDao studentFinalDao; 

    общественного StudentFinalService (StudentFinalDao studentFinalDao) {
         это .studentFinalDao = studentFinalDao; 
    } 

    Общественная  пустота createStudent (Студент) { 
        studentFinalDao.isInsert (студент); 
    } 
}

дао слой

Для того , чтобы имитировать тест, я добавил класс дао слой конечного ключевого слова модификации, этот класс не может наследоваться.

Специальный код следующим образом:

пакет com.rongrong.powermock.mockfinal; 


/ ** 
 * @author Rongrong 
 * @version 1,0 
 * @date 2019/11/27 21:20 
 * / 
Окончательный  общественный  класс StudentFinalDao { 

    общественного Логическое isInsert (Студент) {
         бросить  новый UnsupportedOperationException (); 
    } 
}

Модульное тестирование

Для того, чтобы различать разницу между powermock и EasyMock, давайте принимать тест EasyMock, где первый EasyMock игнорировать использование, заинтересованные студенты могут учиться на своих собственных, чтобы попробовать.

Тест Использование EasyMock

примеры конкретного кода следующим образом:

    @Test
     общественности  недействительным testStudentFinalServiceWithEasyMock () {
         // издеваться对象 
        StudentFinalDao studentFinalDao = EasyMock.createMock (StudentFinalDao. Класс ); 
        Студент = новый студент ();
        // издеваться调用,默认返回成功 
        EasyMock.expect (studentFinalDao.isInsert (студент)) andReturn (. Правда ); 
        EasyMock.replay (studentFinalDao); 
        StudentFinalService studentFinalService = новый StudentFinalService (studentFinalDao); 
        studentFinalService.createStudent (студент); 
        EasyMock.verify (studentFinalDao);
    }

Давайте рассмотрим этот модульный тест, вы найдете за ошибки, в частности, как показано ниже:

 

 Очевидно, что в связи с изменением конечного ключевого слова, что приводит к не давайте тест успешен, мы можем удалить окончательный решающий тест еще раз и обнаружили, что тест.

Тест Использование PowerMock

примеры конкретного кода следующим образом:

package com.rongrong.powermock.mockfinal;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

/**
 * @author rongrong
 * @version 1.0
 * @date 2019/11/27 22:10
 */
@RunWith(PowerMockRunner.class)
@PrepareForTest(StudentFinalDao.class)
public class TestStudentFinalService {

    @Test
    public void testStudentFinalServiceWithPowerMock(){
        StudentFinalDao studentFinalDao = PowerMockito.mock(StudentFinalDao.class);
        Student student = new Student();
        PowerMockito.when(studentFinalDao.isInsert(student)).thenReturn(true);
        StudentFinalService studentFinalService = new StudentFinalService(studentFinalDao);
        studentFinalService.createStudent(student);
        Mockito.verify(studentFinalDao).isInsert(student);
    }
}

运行上面的单元测试时,会发现运行通过!!

рекомендация

отwww.cnblogs.com/longronglang/p/11946208.html