/ / Програмирано инстанциращи обекти, които имат класни апликации от пролетния цикъл - java, spring, unit-testing

Програматично инстанцииране на обекти, чиито класове имат анотации от жизнения цикъл на пролетта - java, spring, unit-testing

Тествам набор от класове, които ще,в крайна сметка, да се използва за създаване на боб в контекста на пролетта. Използвам JUnit за тестване. Искам да се уверя, че когато инстанциите на тези класове са инстанциирани програмно в рамките на тест, че методите на жизнения цикъл и@ Задължителните сетъри се извикват правилно. Знам, че мога да направя това чрез обикновен стар-java-прокси, но се чудя дали съществуват специфични инструменти през пролетта (или другаде), които ще ми помогнат.

Търся да напиша нещо подобно

X x = ???.newBeanInstance(X.class);
x.setFoo(foo);
x.setBar(bar);
x.$postConstruct();
...
x.$preDestroy();
x = null;

Другата, по-малко желана, опция е просто да създадете XML контекста и да го използвате за инициализиране на копията.

Отговори:

2 за отговор № 1

Ако изведете целия контекст, можете да използвате spring-test пакет @ContextConfiguration.

Ако искате да се справите с нещата ръчно, вие сте сами (почти). Ако имате инжекция на място, можете да използвате ReflectionTestUtils за да зададете зависимости. Но освен това вие:

  • инстанцирате обекта с new X()
  • установяване на обаждания
  • извикайте метода на инициализатора (трябва да знаете кой е)
  • наречете метода за унищожаване в края на краищата