ошибка при запуске теста на устойчивость (JUnit) на весну - PullRequest
0 голосов
/ 08 февраля 2020

Я впервые создал бэкэнд своего приложения, используя spring. Я написал свой первый тест на постоянство. Который просто стремится писать и читать из моего слоя постоянства. Тем не менее я получаю следующую ошибку:

org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем ca.mcgill.ecse321.petshelter.dao.TestPetShelterPersistence ': Неудовлетворенная зависимость, выраженная через поле 'clientRepository'; вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного квалифицирующего компонента типа 'ca.mcgill.ecse321.petshelter.dao.ClientRepository': ожидается как минимум 1 компонент, который квалифицируется как кандидат для автоматического подключения. Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = true)}

Даже после многих исследований я не могу найти какое-либо решение для этого.

вот мой репозиторий клиента:

package ca.mcgill.ecse321.petshelter.dao;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

import ca.mcgill.ecse321.projectgroup16.Client;


public interface ClientRepository extends CrudRepository<Client, String> {

    Client findClientByEmail(String email);

}

и вот мой тестовый класс:

package ca.mcgill.ecse321.petshelter.dao;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

import java.sql.Date;
import java.sql.Time;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.Month;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import ca.mcgill.ecse321.projectgroup16.Client;

@ContextConfiguration(classes = {Client.class})
@ExtendWith(SpringExtension.class)
@SpringBootTest
public class TestPetShelterPersistence {

    @Autowired
    private ClientRepository clientRepository; 

    @Test
    public void testCreateClientAndFind() {

        Client u = new Client(); 
        u.setName("joseph");
        u.setEmail("joseph.bouassaf@mail.mcgill.ca"); 

        clientRepository.save(u);

        Client b = clientRepository.findClientByEmail("joseph.bouassaf@mail.mcgill.ca");
        assertNotNull(b);
        assertEquals("joseph.bouassaf@mail.mcgill.ca",b.getEmail());
    }
}

Я прошу прощения, если есть много кода, и спасибо за помощь!

1 Ответ

1 голос
/ 08 февраля 2020

Аннотировать ClientRepository класс с аннотацией @Repository. Без этого ClientRepository не может быть подключен автоматически.

@Repository
    public interface ClientRepository extends CrudRepository<Client, String> {

        Client findClientByEmail(String email);

    }
...