본문 바로가기
카테고리 없음

JUnit5 테스트코드

by 수수남매 2023. 11. 22.
  • 배달 주문 어플리케이션 만들기 프로젝트를 진행하면서 주문 관련 도메인을 맡아서 만들고 있었다.
  • Response body가 좀 복잡했다. 대략 이 정도?
{ 
    “orders” : [
        {
        “accountId“: 1,
        “address”: “서울 은평구 진관동”,
        “createdAt”: 2023.11.18 T00:00:00,
        “menus”: [
            {
            “menuId”: 1,
            “name“: “menu name”, 
            “quantity”: 1, 
            “price”: 10000, 
            “image”: “url”
            },
            {
            “menuId”: 2,  
            “name“: “menu name”,
            “quantity”: 2,
            “price”: 15000,
            “image”: “url”
            }
            ],
        “totalPrice”: 40000,
        “status”: “출발전“
        },
        {
        “accountId”: 2,
        “address”:"서울 송파구 장지동"
        “createdAt”: 2023.11.18 T00:01:00,
        “menus”: [
            ~~~
            ],
        “totalPrice”: 50000,
        “status”: “출발전“
        }
    ]
}
  • 그래서 테스트코드를 만들어 보기로 했다. 테스트 코드에서 Slf4j를 쓸려면 dependency가 필요하다.
    (이거 적어 놓으려고 쓰는 글임)
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
  • 아직 단위테스트 구현은 복잡해서 Service의 메서드를 통으로 돌렸는데 디버깅과 조합하니 나름 오류가 잘 보였다.
@Test
@DisplayName("주문 확인")
void testGetOrders() {
    // given
    log.info("owner account 조회");
    Account owner = accountRepository.findById(4L).orElse(null);

    // when
    assert owner != null;
    log.info("move to service");
    List<OrderListResponseDto> orderListResponseDtos = orderService.getOrders(owner);

    // then
    log.info("move to Test");
    for (OrderListResponseDto dto : orderListResponseDtos) {
        System.out.println("customer Id = " + dto.getAccountId());
    }
    System.out.println(orderListResponseDtos);
}