假设我的 spring boot 应用程序中有一个业务逻辑层。简化:
public interface SimpleClass {
public String getString();
}
@Service
public class SimpleClassImpl implements SimpleClass {
public String getString(){
return "Hello World";
}
}
我需要测试一个方法。我写了这样的东西:
@SpringBootTest
@ExtendWith(SpringExtension.class)
@ComponentScan("there is path to my directory")
class SimpleClassImplTest {
private SimpleClass simpleClass;
@Autowired
SimpleClassImplTest(SimpleClass simpleClass){
this.simpleClass = simpleClass;
}
@Test
public void testGetString(){
assertNotNull( simpleClass.getString());
}
}
即在测试中,我想通过构造函数注入一个业务逻辑类的实例(这是我的任务所必需的)。然而,该应用程序因错误而崩溃:
org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter in constructor.
问题:如何更改(添加什么)SimpleClassImplTest,以便通过构造函数正常注入bean?
问题:如何更改(添加什么)到 SimpleClassImplTest 以便 bean 通常是通过构造函数注入的?
用
@Autowired
注释构造函数。
构造函数参数应该是
SimpleClassImpl
,而不是SimpleClass
。因为它是Spring会注入的SimpleClass接口的具体实现
在使用第 5 单元时,请使用
@ExtendWith
而不是已弃用的 @RunWith
注释。