2016-09-08 2 views
0

I'm три- для запуска теста JUnit гм мой пружинный загрузочный проект, я bilded так:Нет квалификационная рожкового типа не найдено для зависимости

import org.springframework.data.jpa.repository.JpaRepository; 
import org.springframework.data.jpa.repository.Query; 
import org.springframework.data.repository.query.Param; 
import org.springframework.stereotype.Repository; 

import com.br.suppcomm.ocp.entity.Login; 


public interface LoginDao extends JpaRepository<Login, Long>{ 
... 
} 

Service:

import java.util.List; 

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

import com.br.suppcomm.ocp.dao.CompanyDAO; 
import com.br.suppcomm.ocp.dao.LoginDao; 
import com.br.suppcomm.ocp.entity.Login; 



@Service 
public class LoginService { 

    @Autowired LoginDao loginDao; 


    @Autowired CompanyDAO companyDao; 


    public void save(Login login) { 

     loginDao.save(login); 


    } 


    public void delete(Login login) { 
     loginDao.delete(login); 
    } 


    public Login findById(Login login) { 
     return loginDao.findOne(login.getLoginId()); 
    } 


    public Login findByEmail(Login login) { 
     return loginDao.findByEmail(login.getEmail()); 
    } 


    public Login FindByLogin(Login login) { 
     return loginDao.FindByLogin(login); 
    } 


    public List<Login> getAll() { 

     return loginDao.findAll(); 
    } 


    public Login getUserAccessLoginPass(String login, String password) { 
     return loginDao.getUserAccessLoginPass(login, password); 
    } 


    public void update(Login login) { 
     loginDao.save(login); 

    } 

}

Испытание:

package com.example; 


import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.boot.test.context.SpringBootTest; 
import org.springframework.test.context.junit4.SpringRunner; 

import com.br.suppcomm.ocp.service.LoginService; 


@RunWith(SpringRunner.class) 

@SpringBootTest 
public class OcpJpaApplicationTests { 

    @Autowired LoginService loginService; 

    @Test 
    public void contextLoads() { 


    }  

} 

Когда Я запустил этот код, и показал мне ошибку ниже.

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException:   

Ошибка создания боб с именем 'loginService': Неудовлетворенный зависимость выражается через поле 'loginDao': Нет квалификационную боб типа

[com.br.suppcomm.ocp.dao.LoginDao] найденный для зависимости [com.br.suppcomm.ocp.dao.LoginDao]: ожидается как минимум 1 бит, который квалифицируется как кандидат на автоподключение для этой зависимости. Зависимость аннотации: {@ org.springframework.beans.factory.annotation.Autowired (required = true)}; вложенного исключения org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет квалификационных рожковый типа [com.br.suppcomm.ocp.dao.LoginDao] не найдено для зависимости [com.br.suppcomm.ocp.dao.LoginDao ]: ожидается как минимум 1 bean, который квалифицируется как кандидат autwire для этой зависимости. Зависимость от аннотаций: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = истина)}

Я не знаю, что случилось !! Пожалуйста.

+0

В каких пакетах участвуют ваши классы? –

+0

Во-первых, вы должны позволить нам увидеть ваш основной класс ... Ваши аннотации не хватает на всем протяжении ... В вашем репозитории нужен @Repository. Вы должны правильно аннотировать тестовый класс, как это: @RunWith (SpringJUnit4ClassRunner.class) @SpringBootTest (классы = Application.class) и для более точного ответа, мы должны видеть свой главный класс ... –

ответ

1

Добавить @Repository your Interface
аннотация, чтобы он мог быть Autowired.

@Repository 
public interface LoginDao extends JpaRepository<Login, Long>{ 

} 

Это сработает! Исключение говорит о том, что SPring не может найти квалификатор, чтобы Autowired что-то вам нужно для стеротипа.

1

Пожалуйста, добавьте атрибут classes к вашему @SpringBootTest аннотации следующим образом:

@SpringBootTest (классы = {Application.class})

Так что он будет знать, что он должен сделать компонент сканирования и т.д., что вы указали на свой класс Application.

+0

Не работает. Я помещаю этот код, и в Application.class есть аннотация компонентаScan. –

0

Добавить @Repository аннотацию LoginDao

+0

Не работает. –

+0

Нам нужен третий ответ за последний недостающий кусок! Кто-нибудь добровольно ...? :-) – jabal

+0

Попробуйте использовать '@ContextConfiguration (классы = {Application.class}, погрузчик = SpringApplicationContextLoader.class)' вместо '@ SpringBootTest' вместе с' @ Repository' на LoginDao –

0

Вам нужно добавить аннотацию к тесту:

@DataJpaTest

Это заставит Постоянство кусочек вашего приложения для инициализации.

Смежные вопросы

 Смежные вопросы