혼자 하는 Spring 프로젝트 - 3 : Entity별 필요 클래스 추가, TDD를 통한 코드 작성

꾸준하게 달리기~·2023년 7월 14일
0

솔로 프로젝트

목록 보기
3/11
post-thumbnail

저번에
https://velog.io/@dlsrjsdl6505/%ED%98%BC%EC%9E%90-%ED%95%98%EB%8A%94-Spring-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-2-%EC%B4%88%EA%B8%B0%EC%84%B8%ED%8C%85global-%EC%9D%98%EC%A1%B4%EC%84%B1-yml-%EB%A6%AC%ED%8C%8C%EC%A7%80%ED%86%A0%EB%A6%AC-%EC%83%9D%EC%84%B1
를 보면 어디까지 완성했는지 알 수 있다.

이제
엔티티별로
도메인 자체, 리파지토리, Dto, 서비스,Mapper 등
필요한 클래스들을 만들고,


엔티티의 멤버변수들을 채운 후,
비즈니스로직을 만든 후 (TDD),
해당 비즈니스로직에 맞게 Dto, Mapper 등 나머지 클래스를 완성하려고 한다.


엔티티 멤버변수 채우기


Member 엔티티, 그리고 필드변수 position(Enum 형)은

이렇게 만들었고,
그다음 재고를 보여주는
Inventory 엔티티는

아래와 같이 만들었다.
앞으로 비즈니스로직 작성 후 채울 예정이긴 하지만,

이렇게 패키지를 완성시켜놓았다.

TDD

TDD 시간도 오래걸리고 좋은지도 모르겠던데... 싶으면

Repository

repository 인터페이스를

아래와 같이 작성하고,

Test 패키지 안의
resources 패키지 안에

초기 SQL문을 위와 같이 작성해주었다.

(repository.save 매서드를
@BeaforeEach로 매번 사용하지 않기 위해서.)

해당 SQL문과 productReopsitory 두개를 조합하여
junit 라이브러리를 이용하여
아래와 같이 생성되면 true로 빠져나오고,
생성되지 않은 이름은 false로 빠져나오도록
test코드를 만들었고,

아래와 같이 성공할 수 있었다.

비슷한 방식으로
MemberRepositoryTest를 작성했고,

테스트를 성공할 수 있었다.

repository test는 별로 할게 없다고 생각했지만,
막상 해보니까 SQL문을 작성할때 테이블 안의 컬럼명대로 작성하는것부터,
@SQL 애너테이션의 경로 설정을 잘 해줘야 하는것 등
생각만큼 만만하지는 않았다.
이제 다음엔 서비스 로직을 테스트와 함께 만들어 볼 생각이다.

Service

아래와 같이 service에서 만들어주는 매서드부터 시작했다.
어차피 CRUD는 아주 많이 어려운 부분이 아니므로,
patch나 get, private 매서드로 유효성 로직 등은 만들지 않고,
create와 delete정도만 만들 생각이다.

코드 작성시 TDD, 코드 작성 후 CI/CD, 등 이전에 경험하지 못한 오픈소스나 툴들을 이용하는데 중점을 두겠다.

그렇게 아래와 같이 Service로직을 적고, 테스트를 하겠다.

profile
반갑습니다~! 좋은하루 보내세요 :)

0개의 댓글

관련 채용 정보