단위테스트는 전체 어플리케이션을 구동하지않고 일부분만 실행하여 테스트하는 것이 목적이다. 가령 스프링을 사용중이고 서비스 빈을 테스트 한다고할 때, 레포지토리는 컨텍스트에서 인젝션 받을 수 없기때문에 직접 생성자로 생성하여 사용한다. 이때 @Before 애너테이션으로 테스트용 객체를 초기화 할 수도 있지만 목(Mock)을 사용하는 방법이 있다.

서비스를 인터페이스로 만들고, 구현체를 작성할 경우도 있다. 이 경우에는?

단위 테스트는 test디렉터리에 동일한 경로를 미러링하고 클래스이름마지막에 Test를 붙이는 것이 관례. Junit 의 Assertions나 Asserj 사용.

💡아래 키워드를 주석으로 사용할 것을 권장

<aside>

 	  @Test
    void join() {
        //given
        Member member = new Member();
        member.setName("john");
        //when
        memberService.join(member);
        //then
        Member result = memberService.findOne(member.getId()).get();
        assertThat(result).isEqualTo(member);
    }

</aside>

Junit 주요 메서드

Assertj

Mockito

모킹의 목적 : 테스트를 더 쉽게, 독립적으로, 그리고 안정적으로 수행하기 위한 것입니다. 이를 통해 코드의 특정 부분만 집중적으로 테스트하고, 외부 종속성이나 환경과 관련된 문제를 배제할 수 있습니다