有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在spring上运行持久性测试(JUnit)时出现java错误

我第一次使用spring创建了应用程序的后端。我写了我的第一个持久层测试。它的目标是从我的持久层写和读。然而,我得到了以下错误:

组织。springframework。豆。工厂UnsatifiedPendencyException:创建名为“ca.mcgill”的bean时出错。ecse321。宠物收容所。刀。TestPetShelterPersistence”:通过字段“clientRepository”表示的未满足的依赖关系;嵌套的异常是org。springframework。豆。工厂NoSuchBean定义异常:没有“ca.mcgill”类型的合格bean。ecse321。宠物收容所。刀。ClientRepository可用:至少需要1个符合autowire候选资格的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=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. # 1 楼答案

    用@Repository注释ClientRepository类。没有这一点,ClientRepository就无法自动连接

    @Repository
        public interface ClientRepository extends CrudRepository<Client, String> {
    
            Client findClientByEmail(String email);
    
        }