我们使用GWTTestCase进行了许多单元测试,其结构为:
1)提出登录请求。
2)在响应处理程序中,进行需要登录的第二次调用。
这一切都工作正常,但从2.5.1升级到2.7.0后,测试失败,需要登录'错误。似乎问题是会话之间不再存在会话(丢失或未连接)。特别是,我们已经验证登录呼叫是否有效,正确设置会话。
另一项测试更新了本地化选择的会话数据,但同样的模式也失败了。
简化的代码段:
userService.login("user", "password", new AsyncFail<DatumResponse<User>>() {
@Override
public void onSuccess(DatumResponse<User> result) {
final int userId = 1053;
final int userDocId = 44;
authService.isAuthorized(userId, OPERATION_READ, userDocId,
new AsyncFail<AuthorizationResponse>() {
@Override
public void onSuccess(AuthorizationResponse result) {
assertFalse("Unexpected error.", result.isError());
}
}
}
}
我们能够通过在测试套件中添加以下内容来解决这个问题:
SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_GLOBAL);
这可能表明它与线程有关吗?
据我所知,GWTTestCase通常不再是测试的首选方法;这是一个现有的测试体。 &#34;使用Selenium&#34;或其他建议并没有多大帮助。