【问题标题】:Access Spring beans from a Junit Suite从 Junit Suite 访问 Spring bean
【发布时间】:2015-12-11 07:06:41
【问题描述】:

我想完成这个 - 运行一个后台进程(实际上是一个 Solr 实例),我的 JUnit Suite 中的所有测试都将使用它。

为此 - 创建了一个带有 @RunWith(Suites.class) 注释的 JUnit 类。并在套件上添加了ClassRule 以启动和停止服务器。套件中的各个测试使用@SpringApplicationConfiguration@RunWith(SpringJunit4ClassRunner.class) 进行注释。而且我还需要访问套件本身中的一些 Bean(例如 spring 管理的设置 bean)。最好的方法是什么。我试过了。

  1. 使用 @SpringApplicationConfiguration 注释的单个测试
  2. 让套件通过创建ApplicationContext SpringApplication.run 并访问它想要的任何 bean(弹簧 例如,托管的 Settings bean 并使用它的 ClassRules 之一 这个套件)。

我观察到ApplicationContext 上下文每次都会创建,一个用于套件,因为我调用了SpringApplication.run,每个测试都有一个。我显然想避免这种情况,并且在测试运行之间缓存ApplicationContext 在这种情况下似乎也不起作用。

那么处理这种情况的最佳做法是什么。 任何建议/建议将不胜感激。

【问题讨论】:

  • 春天的人们:有什么建议吗?

标签: spring spring-boot junit4


【解决方案1】:

这是一个早已被遗忘的问题,但它出现在我的谷歌搜索中,所以我假设它仍然具有某种相关性:)

我正走在同一条路上,但遇到了很多路障,我决定改变我的方法:

  1. 按照here 的描述创建一个 JUnit 运行器。
  2. 更改 #1 以继承 SpringJUnit4ClassRunner 这是一个 example
  3. 最后,使用@RunWith(MyCustomRunner.class) 注释您的测试类

给你。您可以在跑步者中添加您需要的任何逻辑。

【讨论】:

    猜你喜欢
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    相关资源
    最近更新 更多