Skip to content

자바챌린지 3주차 과제 #5

Description

@mooh2jj
  1. JUnit Test 내 assertThat 사용 검증하기
// 사용 예
public class HelloResponseDtoTest { 
    
   // 테스트절차: given-when-then 순서
    @Test 
    public void lombokFunctionTest() { 

        //given 
        String name = "test";
        int amount = 1000; 

        //when 
        HelloResponseDto dto = new HelloResponseDto(name, amount); 

        //then 
        assertThat(dto.getName()).isEqualTo(name); 
        assertThat(dto.getAmount()).isEqualTo(amount); 
    } 

    // 에러 발생 테스트
    @Test
    public void searchById_ThrowsException() {
        given(this.todoRepository.findById(anyLong())).willReturn(Optional.empty());

//        assertThrows(ResponseStatusException.class, () -> {
//            this.todoService.searchById(1L);
//        });
        assertThatThrownBy(() -> {
            todoService.searchById(1L);
        }).isInstanceOf(ResponseStatusException.class);      // Exception 발생
    }
}
  • 쿠폰 유효기간 검증
  • 쿠폰이름 한글 포함한지 검증
  • 👍 Exception 처리를 하셨다면
  • 쿠폰이름이 null인지 StringUtils 객체 사용하여 Throw Exception 에러 발생 시나리오 검증 테스트 만들기


  1. 객체지향 방식으로 OrderDish 프로그램 설계하기(Java파일로 만들어주세요!)

[문제 : 각 고객(Client), 메뉴판(Menu), 요리사(Shef), 요리(Dish) 객체를 통해 요리를 주문하는 클래스를 설계 및 구현 하십시오.]

  • 각 객체별 기능 요구사항

    • 고객은 요리사에게 요리를 주문 할 수 있습니다.
    • 고객은 주문 시 메뉴판을 이용하여 주문 해야 합니다.
    • 요리사는 고객에게 전달 받은 메뉴판을 통해 조리를 할 수 있습니다.
    • 조리 이후 요리사는 조리 된 요리를 고객에게 전달 합니다.
  • 구현 시 특이사항

    • 각 클래스간 OOP 지향SOLID 원칙이 반영 될 수 있도록 설계를 진행해주세요. (** 상기 명시 된 4개의 클래스 외 설계를 함에 있어 추가적인 클래스 생성이 가능합니다.)

    • main 함수는 (public static void main(String[] args)) Client 객체에 선언 되어 있으며, 주문 시 요리 선택은 Client 객체에서 정의 해주세요.

    • 메뉴판 내에는 각 요리명, 음식분류, 먹는 방식 등이 명시 되어 있습니다. (ex : 갈비찜/한식/젓가락, 파스타/양식/포크, 마파두부/중식/숟가락)

    • 주방장은 음식분류에 따라 조리가 가능한 각각의 요리사가 존재 하며, 더 늘어날 수 도 있습니다. (ex : 한식요리사, 양식요리사, 중식요리사)

    • 고객이 요리를 전달 받고 메시지를 출력 할 때 주문한 음식 이름과 먹는 방법도 함께 출력해주세요

  • 출력 되는 메시지 (예시)

고객은 갈비찜을 주문하였습니다.
    한식 요리사는 갈비찜 주문을 받았습니다.
    한식 요리사는 갈비찜을 만들었습니다.
    고객은 주문한 갈비찜을 받았으며, 젓가락을 먹었습니다.
  • 👀 Hint) 클래스 다이어그램

image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions