From 7f8d6115980c9325ff4b5227843f1972b4d15e44 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 19 Sep 2014 00:11:44 +0200 Subject: [PATCH] Defensive reset/restore of JNDI environment (avoiding test side effects) Issue: SPR-12223 --- .../jndi/JndiLocatorDelegateTests.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/spring-context/src/test/java/org/springframework/jndi/JndiLocatorDelegateTests.java b/spring-context/src/test/java/org/springframework/jndi/JndiLocatorDelegateTests.java index 2a2cc3e744..4e5bdeb200 100644 --- a/spring-context/src/test/java/org/springframework/jndi/JndiLocatorDelegateTests.java +++ b/spring-context/src/test/java/org/springframework/jndi/JndiLocatorDelegateTests.java @@ -16,22 +16,35 @@ package org.springframework.jndi; +import java.lang.reflect.Field; +import javax.naming.spi.NamingManager; + import org.junit.Test; import static org.hamcrest.Matchers.*; - import static org.junit.Assert.*; /** * Tests for {@link JndiLocatorDelegate}. * * @author Phillip Webb + * @author Juergen Hoeller */ public class JndiLocatorDelegateTests { @Test - public void isDefaultJndiEnvironmentAvailableFalse() { - assertThat(JndiLocatorDelegate.isDefaultJndiEnvironmentAvailable(), equalTo(false)); + public void isDefaultJndiEnvironmentAvailableFalse() throws Exception { + Field builderField = NamingManager.class.getDeclaredField("initctx_factory_builder"); + builderField.setAccessible(true); + Object oldBuilder = builderField.get(null); + builderField.set(null, null); + + try { + assertThat(JndiLocatorDelegate.isDefaultJndiEnvironmentAvailable(), equalTo(false)); + } + finally { + builderField.set(null, oldBuilder); + } } }