Spring - 7

CYSSSSSSSSS·2024년 4월 13일
0

스프링

목록 보기
7/16

Spring

테스트 케이스

  • 개발한 기능을 실행해서 검증할때 JUnit이라는 프레임워크를 통해 테스트를 실행할 수 있다.

테스트 케이스 만들기

  • 테스트 케이스는 src/test/java 하위 폴더에서 실행한다.

테스트 케이스

package Portfolio.PortfolioSpring.repository;

import Portfolio.PortfolioSpring.domain.Member;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;

import java.util.List;

// import org.junit.jupiter.api.Assertions;
public class MemoryMemberRepositoryTest {
    MemoryMemberRepository repository  = new MemoryMemberRepository();

    @AfterEach              //테스트의 하나의 동작이 끝날때마다 실행되는 함수를 만들때 AfterEach 어노테이션을 적용해야한다.
    public void afterEach(){
        repository.clearStore();
    }




    @Test           //test는 JUnit에서 제공하는 테스트 전용 어노테이션
    public void save(){
        Member member = new Member();
        member.setName("천영성");

        repository.save(member);

        Member result = repository.findById(member.getId()).get();  // repository에서 꺼낼때 get이라는 메서드를 통해 데이터를 꺼내온다.

        // 옛날 방식
        // Assertions.assertEquals(result , member);   // Junit에서 제공하는 Assertions 클래스에 assertEquals 함수를 이용하여 두개의 객체가 일치하는지 여부플 판단할 수 있다.

        //요즘 방식
        Assertions.assertThat(member).isEqualTo(result); // assertThat을 이용해 멤버가 result랑 똑같은지 확인할 수 있다.
    }

    @Test
    public void findByName(){
        Member member1 = new Member();
        member1.setName("Spring");
        repository.save(member1);

        Member member2 = new Member();
        member2.setName("Python");
        repository.save(member2);

        Member result = repository.findByName("Spring").get();      //findByname으로 찾고

        Assertions.assertThat(result).isEqualTo(member1);

        Member result2 = repository.findByName("Python").get();

        Assertions.assertThat(result2).isEqualTo(member2);

    }
    @Test
    public void findAll(){
        Member member1 = new Member();
        member1.setName("Spring");
        repository.save(member1);

        Member member2 = new Member();
        member2.setName("Python");
        repository.save(member2);

        List<Member> result = repository.findAll();
        Assertions.assertThat(result.size()).isEqualTo(2); // assertThat은 문자열뿐만 아니라 정수,파일,객체,바이트 등등 일치 여부를 확인할 수 있다.


    }
}
  • 테스트 케이스를 만들때 Test라는 어노테이션을 만들어야 테스트를 할 수 있다
  • Test는 Junit에서 제공된다.
  • 그리고 일치 여부를 확인하기 위해 Assertions에 assertThat 함수를 이용하면 된다.
  • Test 객체를 사용할때 중간중간 리포지토리를 비우지 않아 에러가 발생할 수 있다.
  • AfterEach 어노테이션을 사용하여 테스트 하나의 동작이 끝날때마다 실행되는 함수를 만들어 데이터를 비우면 된다.

TDD(Test-Driven-Development)

  • 테스트 클래스를 만들고 만든 클래스에 맞게 respository를 작성하는 방식이다.

TDD 개발방식 순서
1.테스트 작성: 먼저 개발하려는 기능 또는 모듈에 대한 테스트 케이스를 작성합니다. 이 테스트는 해당 기능이나 모듈이 어떻게 동작해야 하는지를 정의합니다. 이때, 아직 구현되지 않은 기능을 테스트하는 것이므로 테스트는 실패할 것입니다.

2.코드 작성: 테스트 케이스를 작성한 후에는 해당 테스트 케이스를 통과시키기 위한 코드를 작성합니다. 이때, 최소한의 코드만을 작성하여 테스트를 통과시킬 수 있는 상태로 만듭니다.

3.리팩토링: 테스트를 통과시킨 후에는 작성한 코드를 리팩토링하여 코드의 가독성을 높이고 중복을 제거하며, 유지보수성을 향상시킵니다.

profile
개발자 되고 싶어요

0개의 댓글