
Spring boot JPA를 활용한 단위 테스트 중 무의식 중에 assertNull을 사용했는데
내가 왜 이걸 사용했지? 그리고 왜 id를 long이 아닌 Long이지?
라는 의문이 들었다.
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Perfume {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PERFUME_ID")
private Long id;
}
@Test
public void ID_자동생성_확인() throws Exception{
//given
String name = "향수이름";
//when
Perfume perfume = new Perfume(name);
//then
assertNull("id는 자동 생성됩니다.", perfume.getId());
}
long은 원시 타입(primitive type), Long은 래퍼 클래스(Wrapper class) 이다.
id를 long으로 사용하는 경우, 별도의 초기화 과정이 없다면 0으로 초기화 된다.
반면, Long으로 사용하는 경우엔 초기값은 Null이다.
그래서 test case에서 assertNull을 사용했다!