Я пытаюсь написать тест JUnit для проекта Spring Roo. Если мой тест требует использования классов сущностей, я получаю следующее исключение:Как использовать тесты JUnit с Spring Roo? (Проблемы с EntityManager)
java.lang.IllegalStateException: Entity manager has not been injected
(is the Spring Aspects JAR configured as an AJC/AJDT aspects library?)
весной аспекты JAR выглядит быть настроен правильно. В частности, у меня есть следующие в файле pom.xml
:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
и
<plugin>
<configuration>
<outxml>true</outxml>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
и классы, которые используют классы сущностей работают хорошо, когда не вызывается из теста JUnit. Любая идея, как я могу настроить вещи так, чтобы менеджер Entity был введен из теста JUnit?
Вот мой тест класс (более или менее):
public class ServiceExampleTest {
@Test
public void testFoo() {
FooService fs = new FooServiceImpl();
Set<Foo> foos = fs.getFoos();
}
}
Этого достаточно, чтобы бросить исключение. Класс FooServiceImpl возвращает набор Foo, где Foo - класс сущности. Метод getFoos()
работает, когда приложение запускается обычным способом. Проблема возникает только в контексте модульных тестов.
Не могли бы вы опубликовать свой тестовый класс, а? Я никогда не использовал Spring Roo, но при обычных тестах Spring вы обычно должны расширять AbstractSpringJUnit4Test (или что-то еще) или использовать пользовательский Spring runner с помощью аннотации для тестов. – ponzao