gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:01:29 25 4
gpt4 key购买 nike

我第一次使用 spring 创建了应用程序的后端。我编写了第一个持久层测试。其目的只是从我的持久层中写入和读取。但是,我收到以下错误:

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“ca.mcgill.ecse321.petshelter.dao.TestPetShelterPersistence”的bean时出错:通过字段“clientRepository”表达的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“ca.mcgill.ecse321.petshelter.dao.ClientRepository”类型的合格 bean:预计至少有 1 个符合 Autowiring 候选资格的 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());
}
}

如果代码较多,我深表歉意,并感谢您的帮助!

最佳答案

使用 @Repository 注释来注释 ClientRepository 类。如果没有这个,ClientRepository 就无法 Autowiring 。

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

Client findClientByEmail(String email);

}

关于java - 在 spring 上运行持久性测试(JUnit)时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60129618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com