Как получить доступ к объекту Spring @Service из теста jUnit

Situation: У меня есть класс реализации сервиса, аннотированный @Service с доступом к файлу свойств.

@Service("myService")
public class MySystemServiceImpl implements SystemService{

      @Resource
      private Properties appProperties;

}

Объект свойств конфигурируется через 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. И я не могу напрямую инжектировать свойства в объект - нет соответствующего setter-метода.

Просто помещу сюда правильные шаги (спасибо @NimChimpsky за ответ):

  1. Я скопировал application.properties в test/resources dir.

  2. Я скопировал applicationContext.xml в каталог test/resources. В контексте приложения я добавляю новый боб (определение свойств приложения уже здесь):

    
    
  3. Я модифицировал класс теста таким образом:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations={"/applicationContext.xml"})
    public class MySystemServiceImplTest {
    
     @Autowired
     MySystemServiceImpl testSubject;
    
    }
    
  4. И это делает трюк - теперь в моем тестовом классе доступен полностью функциональный объект

6
задан dim1902 12 October 2011 в 11:57
поделиться