在与Spring集成测试的框架下,应用程序上下文操作

lsmepo6l  于 2023-03-12  发布在  Spring
关注(0)|答案(2)|浏览(147)

我知道在Spring应用程序的集成测试上下文中,我们可以使用注解:

  • @MockBean将mock对象添加到Spring应用程序上下文中,mock将替换应用程序上下文中任何现有的相同类型的bean。
  • @Autowired可用于从上下文注入bean

这一切都非常方便和美好,但我不明白这是如何发生/这是如何实现的。
据我所知,我们可以测试在自己的进程中运行Tomcat服务器的软件,当服务器启动时,Spring将创建并连接我们定义的所有bean,即所谓的应用程序上下文
如何从另一个进程(我们正在运行测试的Junit进程)操作应用程序上下文
我们如何使用@Autowired从那里查找bean,反之亦然,使用@MockBean创建bean?
看起来应用程序上下文好像被两个进程共享了...
我确信我在这里错过了一些知识,任何指向资源,以帮助我了解正在发生的事情将不胜感激。

4zcjmb1e

4zcjmb1e1#

为了简单起见,这一切都是由项目中包含的Spring测试集成库完成的。(例如@SpringBootTest或@DataJpaTest)它们指示junit扩展其引擎以启动一个测试“风格”的 Spring 引导上下文,然后该上下文负责创建和自动装配“真实的的”依赖项(就像使用@Autowired注解时一样),或者创建模拟,然后自动连接它们,而不是真实的的依赖项

yfjy0ee7

yfjy0ee72#

你的测试框架和你的测试代码运行相同的过程(即在相同的JVM中),因此你的测试和测试框架可以不受任何限制地交互(除了标准的JVM限制)。另外Spring提供了扩展,例如JUnit,以提供对bean,上下文,配置等的轻松访问和操作。

相关问题