例如:我要对“注销”功能进行案例测试。我可以在“输入”中添加什么?单击“注销”按钮?,因为该方法未接收任何参数。。预期的输出将返回“登录”页面。

public String logout() {
  FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
  return "/Login?faces-redirect=true";
}


这肯定是一个非常愚蠢的问题,但是我不习惯做测试用例,所以我有点迷茫。

最佳答案

FacesContext是全局变量。即您可以向其中注入一个模拟。我假设使用Mockito:

@Test
public testLogout()
{
   //setup
   FacesContext context = Mockito.mock(FacesContext.class);
   ExternalContext externalContext = Mockito.mock(ExternalContext.class);
   FacesContext.setCurrentInstance(context);
   when(context.getExternalContext()).thenReturn(externalContext);
   //act
   bean.logout();
   //verify
   verify(externalContext).invalidateSession();
}


这不是最佳方法,但是由于JSF设计不良,因此应使用全局变量和隐式依赖关系。适当的解决方案将包括IoC容器和依赖项注入。

关于java - 如何指定没有输入的测试用例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17014743/

10-11 00:45