For future reference, I found the answer in
http://depressedprogrammer.wordpress.com/2007/06/18/unit-testing-struts-2-actions-spring-junit/
Basically, you need to initialize the tiles listener. As I already used
setupBeforeInitDispatcher to set the applicationContext attribute, I
added the code there (inside the if(tilesApplication) segment):
/** Overrides the previous in order to skip applicationContext
assignment: context is @autowired
* @see
org.apache.struts2.StrutsSpringTestCase#setupBeforeInitDispatcher()
**/
@Override
protected void setupBeforeInitDispatcher() throws Exception {
//init context
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
applicationContext);
if(tilesApplication){
servletContext.addInitParameter(BasicTilesContainer.DEFINITIONS_CONFIG,
"WEB-INF/tiles.xml");
final StrutsTilesListener tilesListener = new
StrutsTilesListener();
final ServletContextEvent event = new
ServletContextEvent(servletContext);
tilesListener.contextInitialized(event);
}
}
Miguel Almeida
On Fri, 2012-01-27 at 17:35 +0000, Miguel Almeida wrote:
> Hi there,
>
> I trying to test an application with the help of StrutsTestCase (a class
> that extends from StrutsSpringTestCase, to be more precise).
> StrutsTestCase (which is in the struts junit plugin) involves proxied
> actions to make tests more light.
>
> I have used the same method in another application that doesn't have
> tiles successfully. Here, however, I am running into an exception when
> running the actionProxy.execute() :
>
>
> java.lang.NullPointerException
> at
> org.apache.struts2.views.tiles.TilesResult.doExecute(TilesResult.java:105)
> at
> org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
>
>
> I found a user that described the problem very well on stackOverflow:
> http://stackoverflow.com/questions/5823709/npe-in-strutstestcase-after-enabling-tiles
>
> There is also a 2008 question on the mailing list
> (http://www.mail-archive.com/[email protected]/msg77582.html ).
> Petrelli tried to answer, but no solution was posted.
>
> From these resources, do you know what the problem might be and if it is
> possible to use StrutsTestCase to test an application that has Tiles
> enabled through the StrutsTilesListener?
>
>
> Cheers,
>
> Miguel Almeida
>