Tool/Spring

· Tool/Spring
Spring boot와 JUnit5, Mockito를 사용해서 Service layer의 테스트 코드를 작성하는 방법을 찾아봤다. Mockito 라이브러리를 사용해서 연관된 Repository, Service 등은 Mock 객체로 만들고 진짜 테스트 하고 싶은 기능을 테스트 해보자. https://www.baeldung.com/mockito-series 여기에 예제가 많이 있었다. mock 객체로 만들어서 테스트 하기 @ExtendWith: Mockito를 사용하는 환경으로 설정한다. @Mock: 클래스의 가짜 인스턴스를 만들어준다. @InjectMocks: 클래스의 필요한 의존성을 Mock으로 자동으로 주입한 인스턴스를 만들어준다. 배운 것과 나의 생각 Service를 테스트 할 때 중요한 점은 어떤 ..
· Tool/Spring
Controller에서 입력받는 Dto 클래스에 @Valid로 유효성 검사를 할 때, 테스트 코드를 작성하는 방법을 찾아봤다. 크게 WebMvcTest로 Controller를 테스트 하는 방법과 Validator를 사용해서 테스트 하는 방법 두 가지를 찾을 수 있었다. 오직 Dto의 유효성 검사만 테스트 하고 싶었기 때문에 Validator를 사용해서 테스트 하는 방법을 사용했다. Validator로 Dto 유효성 검사 커스텀 유효성 검사가 없기 때문에 기본적으로 제공되는 ValidatorFactory, Validator를 사용해서 테스트 했다. validator의 validateProperty 메서드로 원하는 필드의 유효성 검사만 진행했는데, validate 메서드로 한 번에 모든 필드를 검사할 수도 ..
· Tool/Spring
이 글은 Spring boot 3.1.5 버전을 사용하며 작성했다. 결론은 3.1.5 버전 기준으로는 MODE만 설정하면 된다. dialect는 필요 없다. 상황 테스트 환경용 H2 데이터베이스에서 MySQL로 dialect를 설정할 때 아래와 같은 에러가 발생했다. spring: datasource: url: jdbc:h2:mem:testdb;MODE=MySQL; jpa: properties: hibernate: dialect: org.hibernate.dialect.MySQL5Dialect 접근 내가 설정한 dialect를 사용하지 못하는 상황이였다. 어떤 dialect를 사용해야 하는지 알기 위해서 hibernate의 docs를 찾아봤다. https://docs.jboss.org/hibernate/..
· Tool/Spring
Spring boot 환경에서 JUnit5로 테스트 코드를 작성하기 위한 애너테이션을 알아보자. 단위 테스트를 위한 JUnit5 애너테이션 @Test 적용하면 해당 메서드를 테스트 한다. @Test void create(){} @BeforeEach 적용하면 해당 메서드는 각각의 테스트가 실행하기 전에 실행된다. @BeforeEach void test() @AfterEach 적용하면 해당 메서드는 각각의 테스트가 실행된 후에 실행된다. @AfterEach void test() @BeforeAll 적용하면 해당 메서드는 전체 테스트가 실행되기 전에 단 한 번만 실행되는 메서드가 된다. static method여야 한다. @BeforeAll static void test() @AfterAll 적용하면 해당 메..
· Tool/Spring
user가 다른 user를 follow 하거나 unfollow 하는 기능을 만들면서 고민한 내용이다. user가 follow 하는 다른 user들의 정보를 DB에 저장할 때, 하나의 user가 여러 user를 follow 할 수 있고, 여러 user가 하나의 user를 follow 할 수 있으므로 n:m 관계이다. @ManyToMany 사용을 지양하고 중간 Entity를 만들어서 두 개의 @ManyToOne으로 나눠서 개발해야 한다는 것을 어렴풋이 알고는 있었는데, 이참에 정확한 이유를 정리해보자. @ManyToMany 사용을 지양하는 이유 @ManyToMany를 사용하면 JPA는 자동으로 중간 조인 테이블을 생성하고 관리한다. 자동으로 생성해줘서 간편하다는 장점이 있지만, 테이블에 추가적인 필드나 제약..
· Tool/Spring
"Spring Security를 사용할 때, 유저 인증 정보가 없을 때 @AuthenticationPrincipal을 사용하면 어떻게 될까?"에 대한 의문으로 예외를 던질지, null을 반환할지 궁금해서 인증 정보에 접근하는 방법들을 찾아봤다. 결론부터 말하자면 모두 SecurityContextHolder에서 Authentication 클래스를 사용하는 것이고, 인증 정보가 없다면 예외가 아니라 null을 반환한다. Spring Security를 사용할 때, 인증 정보가 담긴 Authentication 객체에 접근하는 방법을 알아보자. 1. SecurityContextHolder 사용 SecurityContextHolder 클래스는 싱글턴 클래스처럼 전역적으로 접근 가능하다. 현재 스레드의 인증 정보를 ..
도_유
'Tool/Spring' 카테고리의 글 목록 (2 Page)