Autowire不在Spring测试中工作

时间:2017-03-03 07:57:57

标签: spring testing autowired

我创建了一个简单的RestController,它自动装配EntityManager和我拥有的另一个类。如果我运行我的应用程序,一切正常,则自动定义。现在我尝试为我的班级创建一个简单的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@EnableWebMvc
@ContextConfiguration(classes = MonitoringController.class)
public class MonitoringControllerTest {

    private MockMvc mockMvc;

    @Autowired
    WebApplicationContext wac;

    @Before
    public void setup() {mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();

    }

    @Test
    public void testMonitoringIsUp()throws Exception {
        mockMvc.perform(get("/monitoring"))
                .andExpect(status().isOk());
    }

这里开始出现问题,我收到了错误 引起:org.springframework.beans.factory.UnsatisfiedDependencyException:使用名称' monitoringController创建bean时出错':通过字段表示的不满意的依赖关系&#39 ;;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型' javax.persistence.EntityManager'的限定bean。可用:预计至少有1个豆有资格作为autowire候选者。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

我想我错过了很简单的事情。任何帮助赞赏。

2 个答案:

答案 0 :(得分:3)

检查您使用的弹簧版本。在春季启动1.4.x及以上 您所需要的只是:

 @RunWith(SpringRunner.class)
 @SpringBootTest
 public class MonitoringControllerTest {
    // autowire beans and perform tests with @Test  
 }

阅读此spring boot tests improvments

答案 1 :(得分:0)

找到解决方案。添加了@EnableAutoConfiguration来解决EntityManager问题。