从JUnit测试中使Tapestry中的会话无效

时间:2013-02-06 20:00:47

标签: session junit tapestry

我正在开发一个大型复杂的Tapestry服务。它通常可以工作,但有时当它运行一段时间它将会失效,它将发送一个错误。这项服务不需要会话,但有时它取决于依赖于“需要”会话的服务的服务。

我想在我的测试中务实地使会话无效,所以我可以防止回归。理想情况下,我会在不破坏生产代码中的会话的情况下执行此操作,这就是我现在正在测试它的方式。

具体来说,我们通过运行服务器并进行http调用以及扩展TapestryIoCTestCase来测试服务。我无法想到从http客户端测试中使会话无效的任何干净方法。为TapestryIoCTestCase创建的Mock会话不支持失效。

我已经考虑过在测试中设置会话超时,但我希望能有更直接的东西。

由于

例如某个人在某个点想要在我们的一个依赖项中设置语言环境

java.lang.IllegalStateException: setAttribute: Session [31943F300613D2105C9AF8602397557D] has already been invalidated
    at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1437)
    at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1402)
    at org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java:156)
    at org.apache.tapestry5.internal.services.SessionImpl.setAttribute(SessionImpl.java:67)
    at org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy.set(SessionApplicationStatePersistenceStrategy.java:68)
    at $ApplicationStatePersistenceStrategy_13c1cafe292.set($ApplicationStatePersistenceStrategy_13c1cafe292.java)
    at org.apache.tapestry5.internal.services.ApplicationStateManagerImpl$ApplicationStateAdapter.set(ApplicationStateManagerImpl.java:50)
    at org.apache.tapestry5.internal.services.ApplicationStateManagerImpl.set(ApplicationStateManagerImpl.java:138)
    at $ApplicationStateManager_13c1cafe272.set($ApplicationStateManager_13c1cafe272.java)

1 个答案:

答案 0 :(得分:0)

我假设您指的是HttpSession,可以通过调用HttpSession.invalidate()来使其无效。尽管如此,你的问题提供的信息太少,无法得到正确答案。你的设置是什么?你有什么尝试?你的代码是什么样的?你在嘲笑你的Servlet容器吗?等...

没有代码的问题很难回答。