Резюме
У нас есть центральный сервер LDAP, к которому должно подключиться наше развернутое веб-приложение Java. Наши тесты JUnit зависят от конкретных данных в хранилище LDAP, поэтому им необходимо подключиться к встроенному серверу ApacheDS LDAP, заполненному образцом набора данных. Как мы можем убедиться, что сервер ApacheDS не запускается при развертывании нашего веб-приложения?
Детали
Мы используем Spring security и имеем следующую строку в ldap-context.xml для запуска встроенного сервера LDAP:
<security:ldap-server root="dc=test,dc=com" port="33389" ldif="classpath:EmbeddedServerRoot.ldif" />
В настоящее время наш web.xml ссылается как на этот файл тестового контекста, так и на наш файл application-context.xml верхнего уровня:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:ldap-context.xml
classpath:application-context.xml
</param-value>
</context-param>
Нам нужно убедиться, что ldap-context.xml включен, когда мы запускаем наши тесты JUnit и когда мы запускаем веб-приложение непосредственно из Eclipse (через WTP), но исключаем, когда мы упаковываем war и разворачиваем его на сервере. .
Мы используем maven в качестве инструмента для сборки. Мы можем довольно легко позаботиться об этой ситуации для наших тестов JUnit, убедившись, что они включают оба контекстных файла Spring в конфигурацию контекста:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:ldap-context.xml", "classpath:application-context.xml" })
public class TestStuff {
}
Тогда наш web.xml будет включать только application-context.xml, за исключением одной вещи - это не работает при запуске из WTP - нам нужен встроенный сервер для запуска в этом случае. Есть предложения?