@Autowired Bean 在 Spring Boot 单元测试中为 NULL
2022-09-01 19:34:08
我是自动化测试的新手,真的想自动化我的测试。这是一个弹簧启动应用程序。我使用了基于Java的注释样式,而不是基于XML的配置。JUnit
我有一个测试类,我想在其中测试一个根据用户输入检索响应的方法。
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SampleTest(){
@Autowired
private SampleClass sampleClass;
@Test
public void testInput(){
String sampleInput = "hi";
String actualResponse = sampleClass.retrieveResponse(sampleInput);
assertEquals("You typed hi", actualResponse);
}
}
在我的“SampleClass”中,我像这样自动连接了一个豆子。
@Autowired
private OtherSampleClass sampleBean;
在我的“OtherSampleClass”中,我注释了一个这样的方法:
@Bean(name = "sampleBean")
public void someMethod(){
....
}
我遇到的问题是,当我尝试在没有和注释的情况下运行测试时,当我尝试运行测试时,注释的变量为空。当我尝试使用这些注释RunWith和SpringBootTest运行测试时,我得到一个@RunWith
@SpringBootTest
@Autowired
由 BeanCreationException 引起的 IllegalStateException:创建名为“sampleBean”的 Bean 时出错,并且由于 BeanInstantiationException 导致无法加载应用程序上下文。
当我尝试像用户一样使用它时,代码可以“正常工作”,所以我总是可以以这种方式进行测试,但我认为自动测试对程序的寿命有好处。
我已经使用Spring Boot测试文档来帮助我做到这一点。