ArtZip 프로젝트 정리 - Spring Boot & Java

yshjft·2022년 8월 19일
0

테스트 코드의 통일성

assertj 라이브러리의 메소드들을 사용해 테스트 코드들의 일관성을 지키자.

null 요소를 포함하는 List.of()

List.of()는 unmodifiable list를 생성하는 메서드입니다. 그리고 unmodifiable list는 null 요소가 들어갈 수 없다. 만약 포함한다면 NullPointerException이 발생한다. (테스트 코드를 작성하다 List.of()에 null 요소를 포함시켰다가 NullPointerException을 만나서 해당 내용을 정리하게 되었다.)

Why list.contains(null) throwing null pointer exception?

ReflectionTestUtils

Service 레이어의 unit 테스트에서 엔티티의 id가 필요하거나 createdAt 또는 updatedAt 필드가 필요하다면 ReflectionTestUtils를 사용해보도록 하자. reflection을 이용하여 private 필드에 원하는 값을 넣을 수 있다.

User user = new User(“jerry”);

ReflectionTestUtils.setField(
	user,
	User.class,
	“id”,
	1L,
	Long.class
);

yml 적용에 대하여

특정 프로파일의 yml이 우선 적용된 이후 특정 파일을 통해 설정되지 않은 부분은  application.yml에 따라 설정된다.

thenReturn VS doReturn

테스트 코드 작성시 나는 보통 when().thenReturn을 사용하지만 다른 팀원이 doReturn.when()을 사용하는 것을 보았다.

  • thenReturn
    • 메소드를 실제 호출하지만 리턴 값은 임의로 정의 할 수 있다.
    • 메소드 작업이 오래 걸릴 경우 끝날때까지 기다려야함
    • 실제 메소드를 호출하기 때문에 대상 메소드에 문제점이 있을 경우 발견 할 수 있다.
  • doReturn
    • 메소드를 실제 호출하지 않으면서 리턴 값을 임의로 정의 할 수 있다.
    • 실제 메소드를 호출하지 않기 때문에 대상 메소드에 문제점이 있어도 알수가 없다.

[Mockito] doReturn / thenReturn
when().thenReturn 과 doReturn().when()의 차이

@SuperBuilder

  • SuperBuilder는 빌더 인스턴스를 매개변수로 사용하는 protected 생성자를 만든다.
  • 기본 생성자가 필요하다면 직접 만들어서 사용해야하는것 같다.

[JAVA] lombok의 @Superbuilder
@SuperBuilder

cors 설정

cors 설정은 request의 origin과의 단순 스트링 비교다

profile
꾸준히 나아가자 🐢

0개의 댓글