У меня есть тест jUnit, который имеет свой собственный файл свойств (application-test.properties) и его конфигурационный файл Spring (application-core-test.xml).Spring jUnit Файл свойств тестирования
В одном из методов используется объект, созданный с помощью пружинной конфигурации, и который является пружинным компонентом. Один из членов в классах получает свою ценность из application.properties, который является нашим основным файлом свойств. При доступе к этому значению через jUnit он всегда равен нулю. Я даже попытался изменить файл свойств, чтобы указать на фактический файл свойств, но это, похоже, не работает.
Вот как я доступ к свойствам файла объекта
@Component
@PropertySource("classpath:application.properties")
public abstract class A {
@Value("${test.value}")
public String value;
public A(){
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
public A(String text) {
this();
// do something with text and value.. here is where I run into NPE
}
}
public class B extends A {
//addtnl code
private B() {
}
private B(String text) {
super(text)
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:META-INF/spring/application-core-test.xml",
"classpath:META-INF/spring/application-schedule-test.xml"})
@PropertySource("classpath:application-test.properties")
public class TestD {
@Value("${value.works}")
public String valueWorks;
@Test
public void testBlah() {
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
B b= new B("blah");
//...addtnl code
}
}
Как вы создаете экземпляр 'A'? Я предполагаю, что вы используете 'new', а не просматриваете его из ApplicationContext. –
. Не следует ли application.properties в @PropertySource читать application-test.properties? –
@Lance Java: Да, я использую новый. Попробуем посмотреть из ApplicationContext. – user1707141