20220131 스터티 정리

2022. 2. 1. 16:00스터디 정리

tdd :  테스트를 먼저 만들고 구현 클래스를 만들어서 돌려보는거

 

  • 테스트 케이스 작성

> @Test

개발한 기능을 실행해서 테스트 할 때 자바는 JUnit이라는 프레임워크로 테스트를 실행

 

>테스트는 순서 보장이 안됨, 순서랑 상관없이 메소드별로 따로 동작하게 설계해야함

>테스트는 독립적으로 실행되어야함. 테스트 순서에 의존관계가 있으면 안됨

 

>@AfterEach

한번에 여러 테스트를 실행하면 이전에 실행했던 메모리가 남을 수 있다.

이러면 다음 테스트가 실패할 가능성이 있다. 

@AfterEach를 사용하면 각 테스트가 종료될 때 마다 실행.(이 기능을 통해 메모리를 지우면서 테스트)

 

테스트 코드 단축키 > ctrl+shilt+T

 

  • Optional이란?

> java8이상부터 지원, NPE(NullPointerException)을 방지할 수 있도록 해줌

> null 또는 실제 값을 value로 갖는 wrapper로 감싸서 NPE(NullPointerException)로부터 자유로워지기 위해 나온 Wrapper 클래스


// 메소드로 코드 빼기  > ctrl + alt+ M
ctrl + alt+ v  >  알아서 return 값을 만들어줌
테스트 코드 단축키 > ctrl+shilt+T
static 사용 : alt+enter 
		(ex. Assertions.assertThat   >> assertThat (assertj사용)
 //shift + F6 => rename

class MemberServiceTest {

    MemberService memberService;
    MemoryMemberRepository memberRepository;

    @BeforeEach
    public void beforeEach(){
        memberRepository = new MemoryMemberRepository();
        memberService = new MemberService(memberRepository); 
        //이렇게 하면 같은 메소드 내에서는 같은 memberRepository가 사용됨
    }
 
 	...
    
}

@BeforeEach : 각 테스트 실행 전에 호출된다. 테스트가 서로 영향이 없도록 항상 새로운 객체를 생성하고, 의존관계도 새로 맺어준다

public class MemberService {

    /*private final MemberRepository memberRepository = new MemoryMemberRepository();*/
    private final MemberRepository memberRepository;

    /*
    이렇게 되면 memberService 입장에서 보면
    내가 직접 new 하지 않고 외부에서 memberRepository 를 넣어주게 된다   
    >> ***이게 Dependency Injection (DI)***
    */
    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }
    
    ...
    
}

'스터디 정리' 카테고리의 다른 글

20220201 스터디 정리  (0) 2022.02.01
20220127-Spring 스터디  (0) 2022.01.27
톰캣 설치  (0) 2021.12.18
서버  (0) 2021.12.03
리눅스공부  (0) 2021.11.23