例如:我想对“注销”功能进行案例测试。我可以在“输入”中添加什么?单击Logout按钮?,因为该方法没有收到任何参数..预期的输出将返回Login页面。
public String logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return "/Login?faces-redirect=true";
}
这一定是一个非常愚蠢的问题,但我不习惯做测试案例,所以我有点迷失。
答案 0 :(得分:0)
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容器和依赖注入。
答案 1 :(得分:0)
从更具理论的角度来看,一个测试案例是:
如果您正在测试“登录”,您的情况是“我已退出”并且您的输入是“log / pwd”
如果您正在测试“注销”,您的情况是“我已登录”并且您没有输入