当前位置: 首页 > 知识库问答 >
问题:

SpringBoot和JUnit--测试服务类--无法加载应用程序上下文

南宫天逸
2023-03-14
@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class) //my @SpringBootApplication class
public class UserServiceTest { //i'm testing my UserService implementation

    @TestConfiguration
    static class UserServiceContextConfiguration {


        @Bean
        public IUserService service() {
            return new UserService();
        }

    }

    @Autowired
    private IUserService service;

    @MockBean
    private UserRepository repository;

    @Before
    public void setUp() {
        User me = new User();

        me.setEmail("admin@admin.com");

        Mockito.when(repository.findByEmail(me.getEmail())).thenReturn(me);
    }

    @Test
    public void whenValidEmail_thenFindUser() {
        String email = "admin@admin.com";
        User found = service.findByEmail(email);

        assertThat(found.getEmail()).isEqualTo(email);
    }

}
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.myapp.service.UserServiceTest': Unsatisfied dependency expressed through field 'service'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.myapp.service.interfaces.IUserService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

共有1个答案

厍华清
2023-03-14

通过提供classes=application.class,您关闭了内部配置类的自动扫描。

要么删除显式classes参数--SpringRunner将在当前包和父包中搜索SpringBootApplication注释类,并搜索内部配置类,

或者将其添加到@SpringBootTest

@SpringBootTest(classes= {Application.class, UserServiceContextConfiguration.class })
 类似资料:
  • 嗨,我正试图让spring junit测试用例...我要求加载完整的应用程序上下文。但是,junit测试不会初始化完整的应用程序上下文。 因此,它应该扫描com.test包中的所有spring bean,并将它们加载到Junit TestCase的applicationcontext中。但从大豆的产量来看,它似乎没有做到这一点。

  • 我有一个应用类 我有控制器课 并且,我想为Application test编写一个测试用例,以确保创建的实例类型为HelloController 但是,我在自动连接 hello控制器变量时遇到错误(找不到 hello 控制器类型的 bean)。根据我的理解,@SpringBootTest应该创建上下文并返回一个实例。我们不需要编写任何上下文 xml 或使用任何注释Config 类来获取实例。缺少了

  • 问题内容: 我有一堆JUnit测试用例(集成测试),它们在逻辑上分为不同的测试类。 我们能够为每个测试类加载一次Spring应用程序上下文,然后将其重新用于JUnit测试类中的所有测试用例 但是,我们只是想知道是否有一种方法可以对一堆JUnit测试类仅加载一次Spring应用程序上下文。 FWIW,我们使用Spring 3.0.5,JUnit 4.5并使用Maven构建项目。 问题答案: 是的,这

  • 我在我的src/test/resources路径中创建了一个application-integrationtest.yaml,所以我的测试是针对创建的docker TestContainer运行的。问题是没有加载我的application-integrationtest.yaml。 我正在运行一个SpringBoot2.x应用程序 原因:org.springframework.beans.Bean

  • 我已经使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎和作为可执行JAR文件的包生成了一个Spring Boot web应用程序。 使用的技术: Spring启动2.0.0。M6,Java8, Maven 这是我的安全配置 在我的 但当我在http://localhost:1234/iberiaWebUtils,而不是去http://localhost:1234/ibe

  • 运行默认Spring Boot单元测试时: 我收到此错误: 我正在运行Spring Boot 2.6.2,使用Flyway和H2,以及这些依赖项: 这是演示项目:https://github.com/filip194/demo-h2-flyway/. 我不确定,也不是专家,但也许与Hibernate有一些关联,我无法理解。我试图为H2创建application.properties的测试资源文件夹