Ложная 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); } }
运行上面的单元测试时,会发现运行通过!!