Ситуация: у меня есть класс реализации службы, аннотированный @Service с доступом к файлу свойств.
@Service("myService")
public class MySystemServiceImpl implements SystemService{
@Resource
private Properties appProperties;
}
Объект Properties настраивается через config-файл. applicationContext.xml
<util:properties id="appProperties" location="classpath:application.properties"/>
Я хочу протестировать некоторые методы этой реализации.
Вопрос: Как получить доступ к MySystemServiceImpl-объекту из тестового класса таким образом, чтобы свойства appProperties были правильно инициализированы?
public class MySystemServiceImplTest {
//HOW TO INITIALIZE PROPERLY THROUGH SPRING?
MySystemServiceImpl testSubject;
@Test
public void methodToTest(){
Assert.assertNotNull(testSubject.methodToTest());
}
}
Я не могу просто создать новый MySystemServiceImpl - чем методы, использующие appProperties, выдают исключение NullPointerException. И я не могу напрямую вводить свойства в объект - нет подходящего сеттера-метода.
Просто укажите здесь правильные шаги (спасибо @NimChimpsky за ответ):
Я скопировал application.properties в папку test/resources.
Я скопировал applicationContext.xml в каталог test/resources. В контексте приложения я добавляю новый компонент (определение свойств приложения уже здесь):
<bean id="testSubject" class="com.package.MySystemServiceImpl">Я изменил тестовый класс таким образом:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"/applicationContext.xml"}) public class MySystemServiceImplTest { @Autowired MySystemServiceImpl testSubject; }И это делает трюк - теперь в моем тестовом классе доступен полностью функциональный объект