본문 바로가기

전체 글74

[springboot] 컨트롤러 JUnit 테스트 Controller JUnit 테스트할 때의 어노테이션 정리 @ExtendWith(SpringExtension.class) //JUnit5 버전, JUnit5 버전은 @RunWith- 스프링 부트 테스트와 JUnit 사이에 연결자 역할 @AutoConfigureMockMvc //@WebMvcTest(@Service, @Repository   테스트 불가능, 컨트롤러 테스트만 가능) 비슷한 의미- MockMvc 제어하는 어노테이션- @Controller 뿐만 아니라 @Service, @Repository 모두 테스트 가능 @SpringBootTest- 테스트에 필요한 거의 모든 의존성 제공- Autowired 허용하여 객체 의존성 주입- 사용 시 @ExtendWith(SpringExtension.class.. 2024. 2. 14.
[JPA] @Setter 대신 @Builder 사용해야하는 이유 @Setter로 생성자 이용 vs  @BuilderJUnit 테스트 할 때 @Setter를 사용하면 set문장이 많아져 코드가 길어진다. 이를 @Builder를 사용하면 한줄코드로 간편하다.  또한, 명확히 어떤 필드에 어떤 값을 채워야 할지를 알 수 있는 장점이 있다.(@ Builder는 해당 클래스의 빌더 패턴 클래스를 생성해주고, 생성자 상단에 선언 시 생성자에 포함된 필드만 빌더에 포함한다.) 주의: @Builder를 사용하려면 기본생성자를 만들어주는@NoArgsConstructor(access = AccessLevel.PROTECTED) 어노테이션도 함께 써야 한다. 그 이유는Reflection을 통한 객체 생성: 빈 객체를 생성하고 필드 값을 설정하기 위해 Java Reflection을 사용할.. 2024. 2. 14.
[springboot] JUnit 테스트에서 @Slf4j 사용하기 JUnit 테스트에서 @Slf4j 사용하려면 build.gradle 파일에 아래 내용을 추가해야 한다. testAnnotationProcessor 'org.projectlombok:lombok' // 테스트를 위한 세팅 @Slf4j testImplementation 'org.projectlombok:lombok' // 테스트를 위한 세팅 @Slf4j 그러면 정상적으로 로그를 사용할 수 있다.아래는 @Slf4j  사용한 예시다.package com.pnow.repository;import com.pnow.domain.Category;import com.pnow.domain.CategoryType;import lombok.extern.slf4j.Slf4j;import org.junit.jupiter.api... 2024. 2. 14.
[JPA] jpa insert시 default 적용 jpa 엔터티 default 설정을 하려면 @DynamicInsert 어노테이션과 @ColumnDefault 어노테이션을 같이 써야 적용이 된다. 예시코드(java):package com.pnow.domain;import com.pnow.domain.user.User;import lombok.Getter;import lombok.Setter;import org.hibernate.annotations.ColumnDefault;import org.hibernate.annotations.DynamicInsert;import javax.persistence.*;import java.time.LocalDate;import java.time.LocalTime;@Setter //jpa 테스트를 위해@Getter@En.. 2024. 2. 13.