2016-09-08 4 views
0

Ich bin tri fand einen JUnit-Test um meine Feder Boot-Projekt auszuführen ich so bilded:Keine Warte Bean vom Typ für Abhängigkeits

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); 

    } 

}

Test:

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() { 


    }  

} 

Wenn Ich habe diesen Code ausgeführt habe mir den folgenden Fehler gezeigt.

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

Fehler Bean mit dem Namen 'loginService' zu erstellen: Unbefriedigend Abhängigkeit durch Feld ausgedrückt 'loginDao': Keine qualifizierenden Bohne vom Typ

[com.br.suppcomm.ocp.dao.LoginDao] gefunden für Abhängigkeit [com.br.uppcomm.ocp.dao.LoginDao]: erwartet mindestens 1 Bean, die als Autowire Kandidat für diese Abhängigkeit qualifiziert. Abhängigkeit Anmerkungen: {@ org.springframework.beans.factory.annotation.Autowired (required = true)}; verschachtelte Ausnahme ist org.springframework.beans.factory.NoSuchBeanDefinitionException: Nein qualifizierenden Bohne vom Typ [com.br.suppcomm.ocp.dao.LoginDao] für Abhängigkeit gefunden [com.br.suppcomm.ocp.dao.LoginDao ]: erwartete mindestens 1 Bohne, die sich als Autowire-Kandidat für diese Abhängigkeit qualifiziert. Abhängigkeit Anmerkungen: {@ org.springframework.beans.factory.annotation.Autowired (required = true)}

Ich weiß nicht, was passiert ist !! Bitte.

+0

In welchen Paketen sind Ihre Klassen enthalten? –

+0

Für den Anfang sollten Sie uns Ihre Hauptklasse sehen lassen ... Ihre Anmerkungen fehlen überall ... Sie benötigen ein @ Repository in Ihrem Repository. Sie müssen die korrekte Schreibweise Ihrer Testklasse mit Anmerkungen zu versehen, wie folgt aus: @RunWith (SpringJUnit4ClassRunner.class) @SpringBootTest (Klassen = Application.class) und für eine genauere Antwort, benötigen wir Ihre Hauptklasse sehen ... –

Antwort

1

Fügen Sie @Repository Ihre Schnittstelle hinzu
Annotation, so dass es Autowired werden kann.

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

} 

Es wird so funktionieren! Exception besagt, dass SPring kein Qualifikationsmerkmal finden kann, um etwas zu autokularen, das Sie sterotypisieren müssen.

1

Bitte fügen Sie das Attribut classes auf Ihre @SpringBootTest Anmerkung wie folgt:

@SpringBootTest (Klassen = {Application.class})

also, dass sie wissen, dass es Komponenten Scan zu tun hat, etc., die Sie haben auf Ihrer Application Klasse angegeben.

+0

Hat nicht funktioniert. Ich stelle diesen Code und in Application.class componentScan Annotation. –

0

hinzufügen @Repository Anmerkung auf LoginDao

+0

Hat nicht funktioniert. –

+0

Wir brauchen eine dritte Antwort für das letzte fehlende Stück! Wer arbeitet freiwillig? :-) – jabal

+0

Probieren Sie '@ContextConfiguration (classes = {Application.class}, loader = SpringApplicationContextLoader.class) 'statt' @ SpringBootTest' zusammen mit '@ Repository' auf LoginDao –

0

Sie benötigen diese Anmerkung zu Ihrem Test hinzuzufügen:

@DataJpaTest

Dies wird die Persistenz Scheibe Sie Anwendung verursachen initialisiert werden.

Verwandte Themen