在弹簧上运行持久性测试(JUnit)时出错

问题描述 投票:0回答:1

我是第一次使用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个有资格作为自动装配候选的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("[email protected]"); 

        clientRepository.save(u);

        Client b = clientRepository.findClientByEmail("[email protected]");
        assertNotNull(b);
        assertEquals("[email protected]",b.getEmail());
    }
}

很抱歉,如果有很多代码,谢谢您的帮助!

java spring junit persistence
1个回答
0
投票

尝试通过这种方式将配置类(其中ClientRepository定义为bean)添加到@SpringBootTest批注:

@SpringBootTest(classes = {<configuration_class_name>.class})
© www.soinside.com 2019 - 2024. All rights reserved.