【问题标题】:Groovy spock test case cant find autowired beansGroovy spock 测试用例找不到自动装配的 bean
【发布时间】:2020-12-01 08:35:35
【问题描述】:

我有以下包和类的结构: com.abc.xyz.main.flow 包有两个类:

 ProcessA.java
 ProcessB.java
 

现在 ProcessB 为:

     public class ProcessB{
     
     @Autowired
     ServiceX serviceX;
     @Autowired
     ServiceY serviceY;
     
}

ServiceX的包是:com.abc.xyz.main.adm.service ServiceY的包是:com.abc.xyz.main.cmn.service

 I am writing groovy test case of ProcessA.java
 
package com.abc.xyz.main.flow


@SpringBootTest(classes = TestConfig.class)
@AutoConfigureMockMvc
public class ProcessASpec extends Specification {
  //mocking code for ProcessA class
}

运行时会报错: com.abc.xyz.main.flow.ProcessB 中的字段 serviceX 需要 ServiceX 类型的 bean

如何解决

【问题讨论】:

  • 你能显示TestConfig.class吗?

标签: java spring-boot unit-testing groovy spock


【解决方案1】:

尝试将此添加到您的班级测试中:

@TestConfiguration
   static class ConfigurationClass{
  
        @Bean
        public ServiceX serviceX() {
            return new ServiceX();
        }
    }

【讨论】:

  • 这意味着对于它会从其他类抱怨的所有字段(因为我正在为 ProcessA 编写测试) ProcessB ,我必须在我的测试类中实现这些。尽管这对我也有用,并且会给出任何错误:在我的测试类中将它们声明为 SpringBean ServiceX serviceX=Mock(); @SpringBean ServiceY serviceY=Mock()。但我只是想知道,如果有任何其他方式我不需要模拟这些,因为这些不属于我的类 ProcessA
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多