[spring] 입문 섹션 3

Minyoung kim·2022년 9월 23일
0

Spring

목록 보기
3/9

웹 서비스 구성

도메인 - 서비스 - 컨트롤러 - db - Repository

도메인 : 객체를 담고 있는 패키지
서비스 : 전체적인 웹 서비스의 로직을 구축하는 패키지
repository interface : db와 repository를 연결하는 점? 정도.. 선언?
repository : 객체 관리, 조회, 수정 등등을 구현!?

repository는 실질적으로 data 저장 공간과 연결되어 data를 주고 받는 기능을 '구현'해 놓은 곳. data를 저장해 놓는 곳이 바뀔 수 있기 때문에(강의에서는 어떤 저장공간을 활용할지 정해지지 않은 상태), '기능' 자체는 repository interface에 명시를 해 놓고, service와 연결되어 적절히 수행되다가, data 저장 공간에 따라서 구현부인 repository만 code를 변경시켜 주면 된다.

Test

코드가 길어지거나 여러명이서 함께 참여하는 개발의 경우에는, test가 반드시 필요하다고 한다..!(한번도 안해봄)

@Test
public void save(){
    Member member = new Member();
    member.setName("spring1");
    repo.save(member);
    Member result = repo.findById(member.getId()).get();
    assertThat(member).isEqualTo(result);
}

src->test-> java 로 들어가서, test하고자 하는 package와 동일한 이름으로 package를 만든 다음, {test하고자 하는 class명 + Test}를 보통 파일 명으로 사용하여 만든다.

  • @Test : test용 annotation을 적는다.

  • 함수의 이름은 아무렇게나 지어도 된다. 심지어는 한글로도 가능.

  • test의 로직은 매번 달라지겠지만, 이번 강의에서는 만들고자 하는 객체와 service로직을 통해 만들어진 객체를 동일한가 비교를 통해 했다.

  • 중요!! assertThat(A).isEqualTo(B)
    A와 B가 같은가? 라고 물음. test 함수를 run했을 때, A와 B가 완전 동일하다면, 아무것도 출력하지 않고 초록색 체크표를 띄운다. 그렇지 않으면 다른 표시를 띄운다.

  • test를 할 때에는 test의 대상이 되는 함수들끼리 서로 독립적이어야 하고, 서로 영향을 받아서는 안된다. 따라서 하나의 같은 객체를 서로 다른 함수들이 이용해야 한다면, 매번 그 객체의 data를 지워주어야 한다.

    @AfterEach
    public void repoClear(){
    repo.clearAll();
    }

    @AfterEach : 매 함수가 끝날 때 마다 실행시키는 어노테이션

  • test 파일을 어렵게 만들지 않고 빠르게 하기! crtr + shift + t 를
    test하고자 하는 class 내부에서 실행시키면 알아서 만들어 준다~

0개의 댓글