Guys,
its getting complicated. But I digged out a nasty thing in Junit
testing. I know whats wrong but looking for advise to fix the correct
place in Struts.

Imagine:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:applicationContext.xml"})
public class MyClass extends StrutsSpringJUnit4TestCase<MyAction> {

@Test public void testMyStuff() {
       this.executeAction("/login.action");
       this.executeAction("/dostuff.action");
       Assert.assertEquals(1, this.getAction().methodFromMyAction());
}
}


So imagine what happens when I call getAction() which is MyAction for
the compiler?
Its a ClassCastException. Because actually its coming a LoginAction
from the first call back

Here is how you can bring it to fly, in my special case:

this.executeAction('/login.action');

SessionMap session =
(SessionMap)ServletActionContext.getValueStack(request).getContext().get("session");
SessionUser sUser = (SessionUser)session.get("myuser");

// Reinit request stuff
this.request = new MockHttpServletRequest();
this.response = new MockHttpServletResponse();
this.pageContext = new MockPageContext(servletContext, request, response);

// Put stuff back into session what you need
 this.request.getSession().setAttribute("tabuser", sUser);

// now it works:
this.executeAction("/dostuff.action");
Assert.assertEquals(1, this.getAction().methodFromMyAction());


So far so good - it seems like the first calls meta data like session
is somehow stored somewhere. To make it all work you'll need to reinit
the whole StrutsJUnit4TestCase mock objects - but then you'll loose
your session data you probably need for the second call.

If we don't fix it, people can only use this for one test class = one
actions tests. But then how do you make tests for action flows?

Now I need some good ideas how a potential test can look like- ideas welcome.

In addition I would like to open an issue for that.

Cheers
Christian


-- 
http://www.grobmeier.de

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
For additional commands, e-mail: dev-h...@struts.apache.org

Reply via email to