您可以使用例如PowerMock這是一個框架,允許您擴展模擬庫,如Mockito具有額外的功能。在這種情況下,它允許您模擬FacesContext
的靜態方法。
如果您使用的是Maven,請使用以下link來檢查所需的依賴項設置。
使用這兩個批註註釋您的JUnit測試類。第一個註釋告訴JUnit使用PowerMockRunner
運行測試。第二個註釋告訴PowerMock準備模擬FacesContext
類。使用
@RunWith(PowerMockRunner.class)
@PrepareForTest({ FacesContext.class })
public class PageBeanTest {
模擬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");
}
我已經創建了一個blog post其中更詳細地解釋上面的代碼示例。
有趣。我可能需要仔細看看Groovy。 – BalusC 2010-12-02 14:31:59