作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试为 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 测试注入(inject)实体管理器吗?
这是我的测试类(或多或少):
public class ServiceExampleTest {
@Test
public void testFoo() {
FooService fs = new FooServiceImpl();
Set<Foo> foos = fs.getFoos();
}
}
这足以抛出异常。 FooServiceImpl 类返回一个 Foo 的 Set,其中 Foo 是一个实体类。 getFoos()
方法在应用程序以通常方式运行时起作用。问题仅出现在单元测试的上下文中。
最佳答案
ponzao 是正确的。通过让我的测试类扩展 AbstractJunit4SpringContextTests,我能够拥有所有的 Spring 注入(inject)魔法。
例如
@ContextConfiguration(locations = { "/META-INF/spring/applicationContext.xml" })
public class SelfRegistrationTest extends AbstractJUnit4SpringContextTests {
关于java - 如何在 Spring Roo 中使用 JUnit 测试? (EntityManager 的问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3284496/
我是一名优秀的程序员,十分优秀!