Spring Roo プロジェクトの JUnit テストを作成しようとしています。テストでエンティティ クラスを使用する必要がある場合、次の例外が発生します。
java.lang.IllegalStateException: Entity manager has not been injected
(is the Spring Aspects JAR configured as an AJC/AJDT aspects library?)
Spring Aspects 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 テストから呼び出されない場合は正常に動作します。エンティティ マネージャが JUnit テストから挿入されるように設定する方法を教えてください。
これが私のテストクラスです(多かれ少なかれ):
public class ServiceExampleTest {
@Test
public void testFoo() {
FooService fs = new FooServiceImpl();
Set<Foo> foos = fs.getFoos();
}
}
これは、例外をスローするのに十分です。FooServiceImpl クラスは Foo の Set を返します。Foo はエンティティ クラスです。このgetFoos()
メソッドは、アプリケーションが通常の方法で実行されている場合に機能します。問題は単体テストのコンテキストでのみ発生します。