如何通过构造函数将 @Service bean 注入到测试 junit 5 中,这样应用程序就不会崩溃?

问题描述 投票:0回答:1

假设我的 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?

java spring junit dependency-injection spring-test
1个回答
0
投票

问题:如何更改(添加什么)到 SimpleClassImplTest 以便 bean 通常是通过构造函数注入的?

  1. @Autowired
    注释构造函数。

  2. 构造函数参数应该是

    SimpleClassImpl
    ,而不是
    SimpleClass
    。因为它是Spring会注入的SimpleClass接口的具体实现

  3. 在使用第 5 单元时,请使用

    @ExtendWith
    而不是已弃用的
    @RunWith
    注释。

© www.soinside.com 2019 - 2024. All rights reserved.