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]