Spring注入静态方法使用的资源

时间:2014-11-25 12:18:16

标签: java spring unit-testing

我的单元测试设置如下:

  1. 使用Mockito运行的单元测试并创建一个Object(类不使用Spring)
  2. Object在构造期间调用名为TimeUtil的实用程序类(Spring Component)中的静态方法
  3. TimeUtil有一个名为TimeService(静态Spring组件)的字段,用于获取时间
  4. 工作流程:单元测试 - >创建对象 - > TimeUtil中的静态方法调用 - >从TimeService获取时间

    此工作流程在生产中运行良好,但测试具有挑战性,因为某些原因TimeUtil中的TimeService始终为null。 Spring应该在运行时将TimeService实例注入到TimeUtil中。

    有人可以告诉我为什么我的TimeService会一直变回null吗?

    我尝试使用Mockito来捕获静态方法调用,但这并不起作用,同样我也无法将TimeService模型注入到对象类中,因为这会静态调用TimeUtil。

1 个答案:

答案 0 :(得分:0)

您需要查看Spring配置,以了解您(或您团队中的某个人)如何使Spring连接静态TimeService。通常,Spring只适用于它创建的bean。因此不支持全局变量和静态方法。在这种情况下,某人必须有书面代码才能进行注射。

向我们展示此代码,我们可以帮助您改进它以进行单元测试。