I completely jumped the gun. My test was flawed and on fixing it, I found that struts was reloading its config on my dispatcher.init() call, and then again just before the request but without my config and so ignoring the configured Dispatch that I set!

I tried the other approach but I can't see any way to get hold of the Dispatcher (since Dispatcher.getInstance() returns null before I launch the request).




Adam Hardy on 04/04/08 00:46, wrote:
Brian, thanks for the low-down. It works well.

Relph,Brian on 03/04/08 15:53, wrote:
Copy paste error, you need to initialize the Dispatcher with your testConfig map:

        Map<String, String> testConfig = new HashMap<String, String>();
testConfig.put("config", "struts-default.xml,struts-plugin.xml,struts.xml,struts-test.xml");
        dispatcher = new Dispatcher(servletContext,
                testConfig);
        dispatcher.init();
        Dispatcher.setInstance(dispatcher);


-----Original Message-----
From: Relph,Brian [mailto:[EMAIL PROTECTED] Sent: Thursday, April 03, 2008 9:48 AM
To: Struts Users Mailing List
Subject: RE: struts.xml


You need to have access to the Dispatcher and the ServletContext in your tests, but you could do something like this for per-unit test configurations:

ConfigurationProvider provider = new StrutsXmlConfigurationProvider(
                "struts-test.xml", true, servletContext);
dispatcher.getConfigurationManager().addConfigurationProvider(provider);
        dispatcher.getConfigurationManager().reload();

If you set devMode = true for your tests, you might be able to avoid the reload() call.

If you have a just a single "struts-test.xml" for all of your tests, you could do something like this in your setUp():

        Map<String, String> testConfig = new HashMap<String, String>();
testConfig.put("config", "struts-default.xml,struts-plugin.xml,struts.xml,struts-test.xml");
        dispatcher = new Dispatcher(servletContext,
                new HashMap<String, String>());
        dispatcher.init();
        Dispatcher.setInstance(dispatcher);

-----Original Message-----
From: Adam Hardy [mailto:[EMAIL PROTECTED]
Sent: Thursday, April 03, 2008 5:00 AM
To: Struts Users Mailing List
Subject: Re: struts.xml

Adam Hardy on 02/04/08 12:23, wrote:
Can I have a second struts.xml in my test directory, and if so, how do I configure it?

I'm testing some stuff using HttpUnit which launches the whole webapp in my tests. Having a test-only struts.xml will keep the test mappings out of the real webapp, allow me to drop stuff I don't need for the tests, and make the tests faster.

From the lack of replies, I assume the answer is 'No, you cannot have an alternative struts.xml'.

I was checking the low-down on the wiki, where I found that the struts configuration xml can be in multiple files listed by the property in the
struts.properties:

### A list of configuration files automatically loaded by Struts struts.configuration.files=struts-default.xml,struts-plugin.xml,struts.xml

Using this property, I can set up my maven environment to filter struts.properties as a resource and set that property explicitly, so in testing I can have 'struts-test.xml'

This works to a limited extent, i.e. one struts.xml for all testing, another for in-container deployment.

It's not quite ideal though, as I would prefer to choose the struts.xml on a per-test basis.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to