mooh2jj / Java-Challenge-Study

자바 챌린지 스터디
2 stars 13 forks source link

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

Open mooh2jj opened 2 years ago

mooh2jj commented 2 years ago
  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 에러 발생 시나리오 검증 테스트` 만들기 

<br>
<br>

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

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

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

* 구현 시 특이사항

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

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

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

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

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

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

고객은 갈비찜을 주문하였습니다. 한식 요리사는 갈비찜 주문을 받았습니다. 한식 요리사는 갈비찜을 만들었습니다. 고객은 주문한 갈비찜을 받았으며, 젓가락을 먹었습니다.



* 👀 `Hint`) 클래스 다이어그램

![image](https://user-images.githubusercontent.com/62453668/189643913-bb427a1b-ace9-4dbf-b6d7-cb5f5829086e.png)
choiyoungkwon12 commented 2 years ago

생각보다 많아서 링크로 올립니다. https://github.com/choiyoungkwon12/javaChallengeStudy/commit/ec9db054587dffd2817ab888890816e528eee22c