Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring测试抛出org.springframework.beans.factory.NoSuchBean定义异常:没有类型为的合格bean_Spring_Junit_Spring Test - Fatal编程技术网

Spring测试抛出org.springframework.beans.factory.NoSuchBean定义异常:没有类型为的合格bean

Spring测试抛出org.springframework.beans.factory.NoSuchBean定义异常:没有类型为的合格bean,spring,junit,spring-test,Spring,Junit,Spring Test,我的web应用程序运行良好。但是当我试图为我的dao类添加测试用例时。我在这篇文章的最后一部分提到了错误 我在同一个文件夹中有UserDaoTest和UserDaoImpl/UserDao 这里是UserDaoTest package com.User.orm.dao; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader=AnnotationConfigContextLoader.cl

我的web应用程序运行良好。但是当我试图为我的dao类添加测试用例时。我在这篇文章的最后一部分提到了错误

我在同一个文件夹中有UserDaoTest和UserDaoImpl/UserDao

这里是UserDaoTest

    package com.User.orm.dao;

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(loader=AnnotationConfigContextLoader.class)

    @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,
            DbUnitTestExecutionListener.class })
    public class UserDaoTest {

        @Autowired
        private UserDao UserDao;

        @Test
        public void testFind() throws Exception {
            List<UserProfile> up = UserDao.searchUsers("test",null);
            System.out.println("test");

        }

    }

为单元测试生成配置类。通过实现@configuration注释定义配置类。然后使用@ComponentScan从包中获取bean

 @Configuration
 @ComponentScan("com.User.orm.dao")
 public class AppConfig {

    @Bean
    public UserDao userDao() {
        return new UserDao();
    }

  }

确保UserDao有@Component或@Service注释。

另外,作为建议,我建议对DAO使用@Repository而不是@Component。它有助于指定类的意图,并限定DAOs引发的未经检查的异常,将其转换为DataAccessException。是的,您是对的,我们可以使用Repository而不是@Component,它将变得更为具体,并有利于错误处理,但大多数情况下,组件都可以正常工作。还有一件事……如果您要使用@Rezwan的方法,我很确定您还需要使用@WebAppConfiguration为您的测试类添加注释。希望这能奏效:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.User.orm.dao.UserDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
 @Configuration
 @ComponentScan("com.User.orm.dao")
 public class AppConfig {

    @Bean
    public UserDao userDao() {
        return new UserDao();
    }

  }