SpringBoot(JPA,Gradle)

[SpringBoot] CRUD 단위 테스트

에띠 2022. 6. 22. 11:37
728x90

DI(Dependency Injection)
- 의존 관계 주입이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라 주입 받아 사용하는 방법(new 연산자를 이용해서 객체를 생성하는 것과 비슷)

 

@Autowired
- 필요한 의존 객체의 "타입"에 해당하는 빈을 찾아 주입
    생성자
    setter
    필드

Day2ApplicationTests 공유 범위 public으로 변경.

 

src > main > test > java > day2 패키지 > repository 패키지 생성 후 Day2ApplicationTests 클래스 상속받은 테스트 클래스 생성

 

[AdminUserRepositoryTest 클래스]

package com.etty.day2.repository;

import com.etty.day2.Day2ApplicationTests;
import com.etty.day2.model.entity.AdminUser;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.time.LocalDateTime;

public class AdminUserRepositoryTest extends Day2ApplicationTests {

    @Autowired // 의존성 주입
    private AdminUserRepository adminUserRepository;

    // 데이터 삽입
    @Test
    public void create() {
        AdminUser adminUser = AdminUser.builder().userid("apple")
        .userpw("1111").name("김사과").status("사용중")
        .regDate(LocalDateTime.now()).build();

        // repository에 저장된 adminUser를 newAdminUser에 저장 후 사용
        AdminUser newAdminUser = adminUserRepository.save(adminUser);
    }
    
    // 데이터 수정
    @Test
    public void update() {
        Optional<AdminUser> adminUser = adminUserRepository.findByUserid("apple");
        
        adminUser.ifPresent(
                selectAdminUser -> {
                    selectAdminUser.setLastLogin(LocalDateTime.now());
                    selectAdminUser.setUserpw("0000");
                    adminUserRepository.save(selectAdminUser);
                }
        );
    }
    
    // 데이터 삭제
    @Test
    public void delete() {
        Optional<AdminUser> adminUser = adminUserRepository.findByUserid("apple");
        
        adminUser.ifPresent(
                selectAdminUser -> {
                    adminUserRepository.delete(selectAdminUser);
                }
        );
    }
}

 

728x90