为了账号安全,请及时绑定邮箱和手机立即绑定

Junit5 Spring Boot Autowire ComponentScan 不工作

Junit5 Spring Boot Autowire ComponentScan 不工作

慕容708150 2021-09-29 10:35:48
我的问题:如果我的测试引用@Bean中列出的类中的声明,则@SpringBootTest自动装配工作。如果它引用@ComponentScan由 中列出的类自动连接的类@SpringBootTest,则自动装配失败。在测试之外,我的应用程序启动时没有自动装配或组件扫描问题,并且我可以确认我要在测试中加载的服务在非测试中运行良好。我很沮丧。我坏了,还是 Spring Boot 2 上的 Junit5 功能?我的测试:@ExtendWith(SpringExtension.class)@SpringBootTest (classes=MyConfig.class)public class MyTest {    // fails to autowire    @Autowired    private MyService _mySvc ;    // succeeds!    @Autowired @Qualifier ( "wtf" )    private String _wtf ;我的配置:@EnableWebMvc@SpringBootApplication ( scanBasePackages = "my.packaging" )@Configurationpublic class MyConfig {    @Bean    public String wtf ( ) { return "W T F???" ; }    // No @Bean for MyService because component scan is nicer in the non-test world
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

尽管测试开始了,但我遇到了与自动装配不起作用的相同问题,问题是我仍在使用旧的 junit4 @Test 注释。确保您的测试方法使用 juni5 包 org.junit.jupiter.api.Test 中的 @Test 进行注释。


查看完整回答
反对 回复 2021-09-29
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

我想是因为你已经这样注释了:

@SpringBootTest (classes=MyConfig.class)

Spring 只会寻找MyConfig.class合适的 bean 而无法为 找到一个MyService,但是,我认为当应用程序正常运行时,Spring 会扫描所有包以查找 bean。这就是它在非测试中工作正常的原因。


查看完整回答
反对 回复 2021-09-29
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

也许你可以添加 @ContextConfiguration(classes = ApplicationConfiguration.class)


它看起来像这样


import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.ContextConfiguration;

import example06.junit.group01.Piano;


@SpringBootTest

@ContextConfiguration(classes = ApplicationConfiguration.class)

public class ApplicationConfigurationTest {

    @Autowired

    private Piano piano;

    

    @Test

    public void shouldTestPiano() {

        System.err.println("Testing JUnit5 > " + piano);

    }

}

我的配置是一个简单的类


@Configuration

@ComponentScan

public class ApplicationConfiguration {


}


查看完整回答
反对 回复 2021-09-29
  • 3 回答
  • 0 关注
  • 320 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信