본문 바로가기

728x90

Testing

(3)
[단위테스트] Unit Test 를 통해 함수를 Refactoring 해보자 Spring Boot 를 통해 앱을 개발하는 중에 기존 코드들을 단위테스트를 진행하면서 Refactoring 을 할 수 있었는데, 사실 Refactoring 을 하겠다고 생각하면서 굉장히 NAIVE 하게 짰던 기존 코드긴 하지만, Refactoring 에 큰 도움을 준다는 점을 다시 한 번 알게 되어 글을 작성해 보게 되었다. 바로 코드로 들어가보자. 우선 이 코드는 특정 Group 에 Member 가 가입하는 요청을 보내서, Group 에 가입을 시켜주는 흔한 로직이다. 다음과 같이 Controller 에서 Service 단으로 요청이 넘어온 상태부터 시작한다. public GroupMember joinGroup(RequestDto reqDto, Member member){ // 해당 그룹이 있는지 먼..
[단위테스트] Mocking 을 사용한 단위테스트의 관점에 대하여 회사에서 단위 테스트를 하다가, SE 라는 부서 (개발을 하기보단 SW 인프라, 설계, TC 지원 등의 업무를 하는 곳) 에서 테스트에 대한 지적(?) 을 많이 받았다. 사실 따지고 보면 관례적인 것 vs 이론적인 것 느낌이 좀 있긴 했는데, 관점의 차이가 확실히 존재하는 것 같았다. 이번엔 그게 어떤 부분이였는지 살펴보자. Group 이라는 Entity, Member 라는 Entity 가 있고, GroupMember 라는 Entity 를 통해 N:N 관계를 맺고 있는 상황이다. 이 때, Group 의 필드 정보들을 수정하기 위한 요청을 보내주는 상황이다. Controller 는 생략하고, Business Logic 인 Service 부분을 살펴보자. public Group updateGroup(Grou..
[단위테스트] Spring Service 단을 테스트해보자 일반적인 Domain 에서 Entity 생성을 Test 해보기 위한 과정을 담아보자 (출처 하단). 간단한 예제를 실무에서 사용하는 방식과 최대한 엮어본 듯 했다. 참고로 Repository 단은 단순 Data Jpa 사용했고, 필요한 필드에 대해서 네임드 쿼리 생성되도록 해주었다. 우선 User 는 다음과 같다 1. User.java @Entity @Getter @NoArgsConstructor(access = AccessLevel.PRIVATE) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; p..