mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Added a convenience method to the ApplicationContextInit @Rule to allow for easier spring overriding in test code.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@34805 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.util.test.junitrules;
|
package org.alfresco.util.test.junitrules;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -79,6 +80,34 @@ public class ApplicationContextInit extends ExternalResource
|
|||||||
this.configLocations = configLocations;
|
this.configLocations = configLocations;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This factory method constructs a JUnit rule which will bring up an ApplicationContext consisting
|
||||||
|
* of the default Alfresco context with any additionConfigLocations appended. It is a convenient way to specify
|
||||||
|
* override contexts in test code.
|
||||||
|
*
|
||||||
|
* @param additionalConfigLocations addition config locations containing additional or overriding beans.
|
||||||
|
*/
|
||||||
|
public static ApplicationContextInit createStandardContextWithOverrides(String... additionalConfigLocations)
|
||||||
|
{
|
||||||
|
List<String> contexts = new ArrayList<String>();
|
||||||
|
|
||||||
|
// The defaults (currently only one)
|
||||||
|
for (String defaultConfigLocation: ApplicationContextHelper.CONFIG_LOCATIONS)
|
||||||
|
{
|
||||||
|
contexts.add(defaultConfigLocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
// any user supplied extras
|
||||||
|
for (String additionalContext : additionalConfigLocations)
|
||||||
|
{
|
||||||
|
contexts.add(additionalContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] contextsAsArray = contexts.toArray(new String[0]);
|
||||||
|
|
||||||
|
return new ApplicationContextInit(contextsAsArray);
|
||||||
|
}
|
||||||
|
|
||||||
@Override protected void before() throws Throwable
|
@Override protected void before() throws Throwable
|
||||||
{
|
{
|
||||||
// Were any context locations specified in the constructor?
|
// Were any context locations specified in the constructor?
|
||||||
|
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2012 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This file is part of Alfresco
|
||||||
|
*
|
||||||
|
* Alfresco is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Alfresco is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.alfresco.util.test.junitrules;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
|
import org.alfresco.service.cmr.repository.ContentService;
|
||||||
|
import org.junit.ClassRule;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test class for {@link ApplicationContextInit}.
|
||||||
|
*
|
||||||
|
* @author Neil Mc Erlean
|
||||||
|
* @since Odin
|
||||||
|
*/
|
||||||
|
public class ApplicationContextInitTest
|
||||||
|
{
|
||||||
|
// Some dummy contexts with test beans in them.
|
||||||
|
public static final String[] dummySpringContexts = new String[] {"classpath:org/alfresco/util/test/junitrules/dummy1-context.xml",
|
||||||
|
"classpath:org/alfresco/util/test/junitrules/dummy2-context.xml"};
|
||||||
|
|
||||||
|
// Rule to initialise the default Alfresco spring configuration
|
||||||
|
@ClassRule public static ApplicationContextInit APP_CONTEXT_INIT = ApplicationContextInit.createStandardContextWithOverrides(dummySpringContexts);
|
||||||
|
|
||||||
|
@Test public void ensureSpringContextWasInitedWithOverrides() throws Exception
|
||||||
|
{
|
||||||
|
// Bean from the standard Alfresco context
|
||||||
|
assertNotNull("Spring context did not contain expected bean.",
|
||||||
|
APP_CONTEXT_INIT.getApplicationContext().getBean("contentService", ContentService.class));
|
||||||
|
|
||||||
|
// Bean from the first override context
|
||||||
|
assertEquals("Value from dummy1-context.xml",
|
||||||
|
APP_CONTEXT_INIT.getApplicationContext().getBean("testBean1", String.class));
|
||||||
|
|
||||||
|
// Bean from the second override context
|
||||||
|
assertEquals("Value from dummy2-context.xml",
|
||||||
|
APP_CONTEXT_INIT.getApplicationContext().getBean("testBean2", String.class));
|
||||||
|
|
||||||
|
// Bean overridden in second context
|
||||||
|
assertEquals("Value from dummy2-context.xml",
|
||||||
|
APP_CONTEXT_INIT.getApplicationContext().getBean("testBean1and2", String.class));
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:context="http://www.springframework.org/schema/context"
|
||||||
|
xmlns:tx="http://www.springframework.org/schema/tx"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||||
|
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
|
||||||
|
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
|
||||||
|
|
||||||
|
<bean id="testBean1" class="java.lang.String">
|
||||||
|
<constructor-arg value="Value from dummy1-context.xml"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="testBean1and2" class="java.lang.String">
|
||||||
|
<constructor-arg value="Value from dummy1-context.xml"/>
|
||||||
|
</bean>
|
||||||
|
</beans>
|
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:context="http://www.springframework.org/schema/context"
|
||||||
|
xmlns:tx="http://www.springframework.org/schema/tx"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||||
|
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
|
||||||
|
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
|
||||||
|
|
||||||
|
<bean id="testBean2" class="java.lang.String">
|
||||||
|
<constructor-arg value="Value from dummy2-context.xml"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="testBean1and2" class="java.lang.String">
|
||||||
|
<constructor-arg value="Value from dummy2-context.xml"/>
|
||||||
|
</bean>
|
||||||
|
</beans>
|
Reference in New Issue
Block a user