/* * Copyright 2002-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.test.context.support; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import org.junit.Test; import org.springframework.context.support.GenericApplicationContext; /** * Unit test which verifies that extensions of * {@link AbstractGenericContextLoader} are able to <em>customize</em> the * newly created <code>ApplicationContext</code>. Specifically, this test * addresses the issues raised in <a * href="http://opensource.atlassian.com/projects/spring/browse/SPR-4008" * target="_blank">SPR-4008</a>: <em>Supply an opportunity to customize context * before calling refresh in ContextLoaders</em>. * * @author Sam Brannen * @since 2.5 */ public class CustomizedGenericXmlContextLoaderTests { @Test public void customizeContext() throws Exception { final StringBuilder builder = new StringBuilder(); final String expectedContents = "customizeContext() was called"; new GenericXmlContextLoader() { @Override protected void customizeContext(GenericApplicationContext context) { assertFalse("The context should not yet have been refreshed.", context.isActive()); builder.append(expectedContents); } }.loadContext("classpath:/org/springframework/test/context/support/CustomizedGenericXmlContextLoaderTests-context.xml"); assertEquals("customizeContext() should have been called.", expectedContents, builder.toString()); } }