当前位置: 首页 > 面试题库 >

在junit测试类中重用spring应用程序上下文

魏学智
2023-03-14
问题内容

我有一堆JUnit测试用例(集成测试),它们在逻辑上分为不同的测试类。

我们能够为每个测试类加载一次Spring应用程序上下文,然后将其重新用于JUnit测试类中的所有测试用例

但是,我们只是想知道是否有一种方法可以对一堆JUnit测试类仅加载一次Spring应用程序上下文。

FWIW,我们使用Spring 3.0.5,JUnit 4.5并使用Maven构建项目。


问题答案:

是的,这完全有可能。你要做的就是locations在测试类中使用相同的属性:

@ContextConfiguration(locations = "classpath:test-context.xml")

Spring按locations属性缓存应用程序上下文,因此,如果locations第二次出现相同的上下文,Spring将使用相同的上下文,而不是创建一个新的上下文。

这具有有趣的含义。因为Spring不知道JUnit何时完成,所以它将永远缓存所有上下文,并使用JVM shutdown挂钩关闭它们。此行为(尤其是当你有许多不同的测试类时locations)可能导致过多的内存使用,内存泄漏等。缓存上下文的另一个优点。



 类似资料:
  • 在运行每个测试类之前,有什么方法可以将应用程序上下文恢复到它的原始状态吗?我不想让“TrainingSessionServiceTest”类扩展AbstractTransactionalJunit4SpringContextTests。以下是我的应用程序上下文的相关部分:

  • 问题内容: 我的WEB-INF目录下有一些XML文件: lyricsBaseApp-servlet.xml hibernate.xml dataSource.xml beans.xml servlet xml导入其他xml文件: 我希望我的junit4 类包含整个spring配置。使用默认文件名,我创建了一个文件。最后,我不知道该放在哪里… 我试过了: 要么 和其他一些想法,但都失败了。有人可以指

  • 问题内容: 我正在使用Spring 3.1.1.RELEASE,JUnit 4.8.1和HSQL 2.7.7内存数据库。我有一个测试班级注释为 问题是,当我运行“ mvn clean test”时,似乎所有的测试类都在上述类失败之后运行,因为内存数据库已被破坏并且没有重新创建。我收到类似的错误 这是我设置给出异常的测试类(在上述类之后运行)的方式…… 在运行每个测试类之前,有什么方法可以将应用程序

  • 嗨,我正试图让spring junit测试用例...我要求加载完整的应用程序上下文。但是,junit测试不会初始化完整的应用程序上下文。 因此,它应该扫描com.test包中的所有spring bean,并将它们加载到Junit TestCase的applicationcontext中。但从大豆的产量来看,它似乎没有做到这一点。