SpringBoot/기타
테스트 코드를 위해 실제 코드에 영향이 가도 될까??
테스트 코드를 위해 실제 코드에 영향이 가도 될까??
2022.12.26개발을 하며, "테스트 코드를 위해 프로덕션 코드에 영향을 줘도 될까?"라는 고민이 테스트 코드를 작성하다 보니 생겼습니다. 고민해본 예시는 다음과 같습니다. Querydsl을 사용하며 Projection을 사용할 때 Setter를 만들지 않고, field 주입을 이용해 객체를 생성할 수 있습니다. 팀 내에서 field 주입만 사용하고 있기에 Getter만 생성해서 사용했습니다. 문제는 테스트 코드를 작성하며, 모든 값을 채우는 All 생성자나 Setter가 없기에 객체를 생성한 후 Reflection을 이용해서 값을 채워야 했습니다. 결국 Builder나 All 생성자가 없어 Service 계층의 테스트 코드는 Reflection이 덕지덕지 붙고 말았습니다.. 어떤 상황이 있는지 알아봤고, 본론으로 테..
Springboot Test 코드 작성
Springboot Test 코드 작성
2022.03.18Test 코드를 작성하는 법을 알아보기 전에 Test 코드의 필요성에 대해서 알아보겠습니다. 1. 왜 Test 코드를 작성하는가? 크게 2가지 이유가 있습니다.' 1-1. Test 코드를 작성하지 않고 결과를 검증하는 과정은 비용이 많이 든다. Test코드 사용 X (싱글 애플리케이션 (Monolithic Arichitecture)에서의 모습) 검증 코드 작성 애플리케이션 실행 PostMan 혹은 브라우저 Request 요청 log 혹은 print로 결과 검증 원하지 않는 결과 발생 시 애플리케이션 종료 다시 코드 작성 위와 같은 로테이션이 원하는 결과를 얻을 때까지 돌아가게 됩니다. 간단한 애플리케이션이라도 실행하고 종료하는데 비용이 많이 듭니다. 하지만 Test 코드를 작성한다면 이야기가 달라집니다...
Springboot Dto는 많이 만들어도 될까?
Springboot Dto는 많이 만들어도 될까?
2022.02.22Dto란? Dto는 Data Transfer Object의 약자입니다. 계층 간 데이터 교환 역할을 합니다. DB에 저장되는 Entity를 감싸 Wrapper라고 생각할 수 있습니다. Entity를 클라이언트단과 연결되는 Controller에 사용할 때 문제점이 있습니다. 1. Entity의 스펙 노출 -> Entity의 모든 값이 외부에 노출 될 수 있습니다. 2. 기능에 따라 요구하는 데이터가 다름 -> signup 기능: 이름, 아이디 등등 , login 기능: 아이디, 패스워드 이러한 문제를 해결하기 위해 Dto를 사용합니다. 예를 보겠습니다. @RestController @RequiredArgsConstructor @Slf4j public class UserController { private ..
springboot [No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator.] 오류
springboot [No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator.] 오류
2022.01.10▶ 문제 springboot 2.6.2 버전을 이용하여 사이드 프로젝트를 진행했습니다. RestController를 만들고 Postman으로 테스트를 했는데 No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator. 오류가 떴습니다. ▶ 코드와 사진 1. 요청을 받을 RestController입니다. UserDto를 @RequestBody로 받아 회원가입을 진행합니다. @RestController @RequiredArgsConstructor public class UserController { private final UserService use..