AbstractSpringAction Test Case available?
colletts Feb 29, 2008 12:10 AMHi,
Are there any Junit helper classes for creating test cases for AbstractSpringAction(s)?
I am looking for something along the lines of spring classes like AbstractDependencyInjectionSpringContextTests.
Failing that are there any good examples of using Junit to test JBoss ESB actions?
I tried to create an AbstractSpringAction and ConfigTree programatically in the testcase but I can't seem to get the Spring Container to initialise in a junit test.
Test Class
public class MySpringEnabledActionTest extends AbstractDependencyInjectionSpringContextTests{ public void testSayHelloAopStyle() throws Exception { String messageObject = "Message Body String Object"; Message esbMessage = MessageFactory.getInstance().getMessage(); esbMessage.getBody().add(messageObject); Message returnMessage; File esbConfigFile = new File("C:/dev/workspace/TestJBossESBSpringAOP/src/main/resources/META-INF/jboss-esb.xml"); FileInputStream fis = new FileInputStream(esbConfigFile); ConfigTree configTree = ConfigTree.fromInputStream(fis); MySpringEnabledAction mySpringEnabledAction = new MySpringEnabledAction(configTree); returnMessage = mySpringEnabledAction.sayHelloAopStyle(esbMessage); assertSame(messageObject,returnMessage.getBody().get()); } ... }
this works to a point; but in the actual AbstractSpringAction the spring bean factory is not initialised.
public class MySpringEnabledAction extends AbstractSpringAction { public MySpringEnabledAction(ConfigTree config) throws Exception { configTree = config; } public Message sayHelloAopStyle(Message message) throws Exception { String springContextXml = configTree.getAttribute("springContextXml"); logger.error("springContextXml from contextTree is " + springContextXml); \\ shows that the springContextXml attribute is null BeanFactory beanFactory = getBeanFactory(); if (beanFactory==null){ logger.error("Beanfactory is null"); \\ because the springContext is null the beanfactory is null?? } else{ logger.error("Beanfactory is NOT null"); } SaySomething hello = (SaySomething) beanFactory.getBean("helloObject"); \\null pointer exception here logHeader(); // interceptor will get applied here // check the console output to see the interceptor changed the message hello.setGreeting((String)message.getBody().get()); logFooter(); return message; }
The jboss-esb.xml is exactly the same as from the sample quickstart spring_aop i.e. there is a springContextXml attribute pointing to the spring-context.xml
Using jbossesb-server-4.2.1GA in windows XP win32 with Eclipse 3.3.1.1 and Maven 2.0 running the test cases
Thanks
Steve