코틀린 - JUnit5로 Spring Boot 테스트하기

박경희·2025년 3월 31일
0

강의 복습 및 정리

목록 보기
34/38
@Test
    fun saveUser() {
        //given
        val request = UserCreateRequest("솜사탕", null)

        //when
        userService.saveUser(request)

        //then
        val results = userRepository.findAll()
        assertThat(results).hasSize(1)
        assertThat(results[0].name).isEqualTo("솜사탕")
        assertThat(results[0].age).isNull()
    }

results[0].age must not be null
java.lang.NullPointerException: results[0].age must not be null

플랫폼 타입때문에 에러가 나는거다.

코틀린에서 .age라고 했을 때 자바에 있는 getAge를 호출한다.
자바에서 Integer라고 값을 줬는데 코틀리네서는 이 int가 null이 들어갈 수 있는 정수인지 null이 들어갈 수 없는
정수인지 판단을 못한다.
String도 마찬가지로 null 여부를 판단하지 못한다.

그래서 일단은 null이 아니겠거니 하고 값을 가져오는데 null이어서 exception이 난것이다.

null관련 어노테이션으로 해결하자

@Nullable, @NotNull

  • org.jetbrains.annotations
  @NotNull
  public String getName() {
    return name;
  }

  @Nullable
  public Integer getAge() {
    return age;
  }

참고 - 실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

0개의 댓글