테이블에서 자동으로 카운트하여 값을 +1 하여 저장하는 auto_increment 는 자동으로 설정하기 때문에 사용자가 임의로 값을 지정할 수 없다. 값을 지정하더라도 실제로는 다른 값으로 저장된다.

@DisplayName("구간 생성 시 상행역 또는 하행역 중 하나만 지하철 노선에 포함되어 있으면 등록 가능하다.")
@Test
void saveExistOneStation() {
    // given
    long station1Id = stationDao.save(new Station(1L, "강남역"));
    long station2Id = stationDao.save(new Station(2L, "역삼역"));
    long station3Id = stationDao.save(new Station(3L, "삼성역"));

    sectionDao.save(1L, new Section(station1Id, station2Id, 10));

    // when & then
    assertThatCode(
            () -> sectionService.save(1L, new SectionRequest(station1Id, station3Id, 10)))
            .doesNotThrowAnyException();
}

위의 예시는 제대로 동작하는 코드이다. 지하철역(station)을 저장하면 저장된 데이터의 아이디값을 반환받는다. 지하철역 객체 생성 시 1L 로 아이디를 설정해두어 실제 아이디가 1L 일거라 생각하지만 실제로는 아니다. 테스트 작성 시 가독성을 위해 1L 로 테스트할 경우 에러가 발생한다.