Defensive reset/restore of JNDI environment (avoiding test side effects)

Issue: SPR-12223
master
Juergen Hoeller 10 years ago
parent 237b50a9c8
commit 7f8d611598
  1. 19
      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);
}
}
}

Loading…
Cancel
Save