@Test public void threadLocalsAfterSessionDestroy() { final AtomicBoolean detachCalled = new AtomicBoolean(false); ui.addDetachListener( new DetachListener() { @Override public void detach(DetachEvent event) { detachCalled.set(true); Assert.assertEquals(ui, UI.getCurrent()); Assert.assertEquals(ui.getPage(), Page.getCurrent()); Assert.assertEquals(session, VaadinSession.getCurrent()); Assert.assertEquals(mockService, VaadinService.getCurrent()); Assert.assertEquals(mockServlet, VaadinServlet.getCurrent()); } }); CurrentInstance.clearAll(); session.close(); mockService.cleanupSession(session); Assert.assertTrue(detachCalled.get()); }