Mam aplikację internetową, w której mam typowy problem, który wymaga różnych plików konfiguracyjnych dla różnych środowisk. Niektóre konfiguracje są umieszczane na serwerze aplikacji jako źródła danych JNDI, jednak niektóre konfiguracje pozostają w plikach właściwości.Profile sprężyn i testowanie
Dlatego chcę użyć funkcji Spring profiles.
Mój problem polega na tym, że nie mam uruchomionego testu.
context.xml:
<context:property-placeholder
location="classpath:META-INF/spring/config_${spring.profiles.active}.properties"/>
TestCase:
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({
TestPreperationExecutionListener.class
})
@Transactional
@ActiveProfiles(profiles = "localtest")
@ContextConfiguration(locations = {
"classpath:context.xml" })
public class TestContext {
@Test
public void testContext(){
}
}
Problem wydaje się, że zmienna ładowania profil nie został rozwiązany:
Caused by: java.io.FileNotFoundException: class path resource [META-INF/spring/config_${spring.profiles.active}.properties] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157)
at org.springframework.core.io.support.PropertiesLoaderSupport.loadProperties(PropertiesLoaderSupport.java:181)
at org.springframework.core.io.support.PropertiesLoaderSupport.mergeProperties(PropertiesLoaderSupport.java:161)
at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.postProcessBeanFactory(PropertySourcesPlaceholderConfigurer.java:138)
... 31 more
Prąd profil powinien być ustawiony za pomocą adnotacji @ActiveProfile
. Ponieważ jest to sprawa testowa, nie będę mógł korzystać z web.xml
. Jeśli to możliwe, chciałbym również uniknąć opcji środowiska wykonawczego. Test powinien przebiegać tak, jak jest (jeśli to możliwe).
Jak mogę właściwie aktywować profil? Czy można ustawić profil za pomocą pliku context.xml? Czy mogę zadeklarować zmienną w pliku test-context.xml, który faktycznie wywołuje normalny kontekst?
Dzięki. Wykreślono jedną poprawkę dodaną poniżej. –
To podejście nie jest czyste, musisz przejść do pliku właściwości, w którym należy zmienić aktywną wartość profilu. – codebusta