我们有许多使用 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 通常不再是首选的测试方法;这是现有的测试机构。“使用 Selenium”或其他建议并没有真正的帮助。