Я создаю проект, используя новые конфигурации Spring. У меня есть базовый класс, который содержит несколько свойств:Правильное наследование для весенних конфигураций
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {Basic.class, Protected.class})
public class BaseTest {
@Autowired(required = false) protected String userName;
@Autowired(required = false) protected String password;
@Autowired protected String baseURL;
@Test
public void outputData() {
System.out.println("UserName: " + userName + " Password: "
+ password + "Base URL: " + baseURL);
}
}
@ActiveProfiles("default,protected")
public abstract class ProtectedTest extends BaseTest
{
@Autowired protected String userName;
@Autowired protected String password;
}
@Configuration @Profile("default")
public class Basic {
@Bean public String baseURL() { return "http://www.baseURL.com"; }
}
@Configuration @Profile("protected")
public class Protected {
@Bean public String userName() { return "userName"; }
@Bean public String password() { return "password"; }
}
Однако, когда я иду, чтобы запустить мои защищенные тесты я получил уведомление о том, что базовый URL не подключен должным образом. Поскольку он расширяет BaseTest и имеет оба профиля активными, почему я не получаю bean baseURL?
Это был долгий день, и я только что скопировал это из моей конфигурации переменной окружения. Однако здесь есть две вещи: вам не нужно добавлять RunWith в [расширенные классы] (http://junit.sourceforge.net/javadoc/org/junit/runner/RunWith.html) или ContextConfigurations [ они наследуют по умолчанию] (http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/test/context/ContextConfiguration.html#inheritLocations()) – Scott