Вы можете использовать, например, PowerMock , который является структурой, которая позволяет расширять библиотеки-макеты, такие как Mockito , с дополнительными возможностями. В этом случае это позволяет вам высмеивать статические методы FacesContext
.
Если вы используете Maven, используйте следующую ссылку , чтобы проверить необходимые настройки зависимостей.
Аннотируйте ваш тестовый класс JUnit, используя эти две аннотации. Первая аннотация указывает JUnit запустить тест с использованием PowerMockRunner
. Вторая аннотация говорит PowerMock , чтобы подготовиться к издевательству над классом FacesContext
.
@RunWith(PowerMockRunner.class)
@PrepareForTest({ FacesContext.class })
public class PageBeanTest {
Mock FacesContext
с использованием PowerMock и использованием verify()
из Mockito для проверки того, что resolveVariable()
был вызван с ожидаемыми параметрами.
@Test
public void testGetPageBean() {
// mock all static methods of FacesContext
PowerMockito.mockStatic(FacesContext.class);
FacesContext facesContext = mock(FacesContext.class);
when(FacesContext.getCurrentInstance()).thenReturn(facesContext);
Application application = mock(Application.class);
when(facesContext.getApplication()).thenReturn(application);
VariableResolver variableResolver = mock(VariableResolver.class);
when(application.getVariableResolver()).thenReturn(variableResolver);
PageBean.getPageBean("bean_reference");
verify(variableResolver)
.resolveVariable(facesContext, "bean_reference");
}
Я создал пост в блоге , в котором более подробно объясняется приведенный выше пример кода.