簡體   English   中英

在 spring 上運行持久性測試(JUnit)時出錯

[英]error when running persistence test(JUnit) on spring

我第一次使用 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("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 不能被自動裝配。

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

        Client findClientByEmail(String email);

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM