개발한 기능을 실행해서 테스트 할 때 자바의 main 메서드를 통해서 실행하거나,

웹 애플리케이션의 컨트롤러를 통해서 해당 기능을 실행한다.

이러한 방법은 준비하고 실행하는데 오래 걸리고,

반복 실행하기 어렵고, 여러 테스트를 한번에 실행하기 어렵다는 단점이 있다.

자바는 JUnit이라는 프레임 워크로 테스트를 실행해서 이러한 문제를 해결한다.

save 기능 테스트 예제 (경로는 test 폴더 안에 만들면 된다)

스크린샷 2021-12-30 오전 10.37.21.png

package hello.hellospring.repository;

import hello.hellospring.domain.Member;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class MemoryMemberRepositoryTest {
    MemberRepository repository = new MemoryMemberRepository();

    @Test
    public void save() {
        Member member = new Member();
        member.setName("spring");

        repository.save(member);
        Member result = repository.findById(member.getId()).get();
				// jupiter가 지원하는 두객체가 같은 지 비교 하는 메서드
        Assertions.assertEquals(member, result);
				/*
					비슷한걸로 아래 코드가 있는데, 아래 Assertions는 
					import org.junit.jupiter.api.Assertions 대신
					import org.assertj.core.api.Assertions 를 임포트 해야함
				*/
				// Assertions.assertThat(member).isEqualTo(result);
    }
}

static import

Assertions 에 커서를 두고 option + enter를 하면 아래와 같이 뜬다.

스크린샷 2021-12-30 오전 10.42.14.png

Add on-demand static import for~ 이걸로 선택 해주면 static import로 들어가서 다음부터 Assertion을 앞에 계속 붙일 필요 없다.

import hello.hellospring.domain.Member;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.*; // 여기

public class MemoryMemberRepositoryTest {
    MemberRepository repository = new MemoryMemberRepository();

    @Test
    public void save() {
        Member member = new Member();
        member.setName("spring");

        repository.save(member);
        Member result = repository.findById(member.getId()).get();
        assertThat(member).isEqualTo(result);

    }
}

테스트는 순서대로 실행하지 않는다.

예를 들어 아래 와 같은 코드(3개의 테스트를 돌리는)가 있다고 하자.