Spring JUnit测试:NoSuchBeanDefinitionException:没有类型为的合格bean

Spring JUnit测试:NoSuchBeanDefinitionException:没有类型为的合格bean,spring,hibernate,spring-mvc,junit,javabeans,Spring,Hibernate,Spring Mvc,Junit,Javabeans,我得到以下异常: Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.servlet.http.HttpServletRequest] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this depe

我得到以下异常:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.servlet.http.HttpServletRequest] 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)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)
... 56 more
全堆栈跟踪

这是我的JUnit:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfig.class)
@Transactional
public class Prueba {

    private static final String FIRSTNAME = "TestFirstName";
    private static final String LASTNAME = "TestLastName";
    private static final String EMAIL = "test@mail.com";
    private static final String PASSWORD = "TestPassword";
    private static final String PHONENUMBER = "00000000";
    private static final String ROLE = "USER";

    @PersistenceContext
    private EntityManager em;

    @Autowired
    private UserHibernateDao userDao; // THIS SEEMS TO BE THE ISSUE!
    private JdbcTemplate jdbcTemplate;
    private long user_id;

    @Before
    @Transactional
    public void setUp() {

        User u;
        for (int i = 0; i < 50; i++) {
            u = new User();
            u.setFirstName(i + FIRSTNAME + i);
            u.setLastName(i + LASTNAME + i);
            u.setEmail(i + EMAIL);
            u.setLocked(false);
            em.persist(u);
            if (i == 10) {
                this.user_id = u.getUserid();
            }

        }
    }

    @Rollback
    @Test
    public void testCreate() {
        final User user =  userDao.create(FIRSTNAME, LASTNAME, EMAIL, PASSWORD, PHONENUMBER, ROLE);
        assertNotNull(user);
    }
}
以下是我的软件包的外观:

有没有办法解决这个问题

我试着换衣服 @组件扫描({“src.main.java.ar.edu.itba.paw.persistence”,})

到 @组件扫描({“ar.edu.itba.paw.persistence”,})

但这也不行


还有我的

您尝试@Autowired的类应该用@Service或@Component注释

问题显然是在安装过程中出现的,因为em.persist。我把它改成:

@Before
@Transactional
public void setUp() {

    User u;
    for (int i = 10; i < 50; i++) {
        u = new User(i+FIRSTNAME, i+LASTNAME, i+EMAIL, PASSWORD, PHONENUMBER, ROLE, LANGUAGE);
        em.merge(u);
        if (i == 10) {
            this.user_id = u.getUserid();
        }

    }
}
@之前
@交易的
公共作废设置(){
用户u;
对于(int i=10;i<50;i++){
u=新用户(i+名字、i+姓氏、i+电子邮件、密码、电话号码、角色、语言);
em.merge(u);
如果(i==10){
this.user_id=u.getUserid();
}
}
}

请共享完整的错误堆栈。org.springframework.beans.factory.unsatifiedPendencyException部分将显示故障的确切组件。它与你所学的课程无关shared@R.G好的,我刚把它贴在这里@ComponentScan()的开头似乎有一个额外的反斜杠。2.请共享UserHibernateDao类。这个类是如何生成一个bean的?那个反斜杠是一个拼写错误。这是UserHIbernateDao。您正在将HttpServletRequest连接到存储库,这不是推荐的方法。要使此测试正常工作,您需要模拟HttpServletRequest
@Before
@Transactional
public void setUp() {

    User u;
    for (int i = 10; i < 50; i++) {
        u = new User(i+FIRSTNAME, i+LASTNAME, i+EMAIL, PASSWORD, PHONENUMBER, ROLE, LANGUAGE);
        em.merge(u);
        if (i == 10) {
            this.user_id = u.getUserid();
        }

    }
}