지난 시간에 했던 것을 잘 완성하지 못하여 조금 더 쉬운 문제로 바꾸었다.
https://github.com/myeongjaeking/StringCalculator
GitHub - myeongjaeking/StringCalculator: 문자열 사칙연산 계산기
문자열 사칙연산 계산기. Contribute to myeongjaeking/StringCalculator development by creating an account on GitHub.
github.com
스프링 입문을 위한 자바 객체 지향의 원리와 이해 라는 책을 3회독 완료하고 다시 하는 것이기 때문에 전보단 더 잘할 것이다!!!
프로그램 전체 흐름은
나쁘지 않지 않은가?!?! 고민 많이하고 만들었다... 최대한 OOP와 SOLID를 지키려고 하였다.
이제 구상은 끝났으니 코드를 작성해보겠다.
test 코드는 최상위 디렉토리에서 Open Module Settings
위 과정을 거치면 인텔리제이에서 테스트 코드를 작성할 수 있다.
@Test
@DisplayName("입력 문자열아 비어있을 때 예외발생")
void testValidNullInput(){
//Given
String testInput = "\n";
setInput(testInput);
InputHandler input = new InputHandler();
//When
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class,()->{
input.inputValidation.validateInput();
});
//Then
Assertions.assertEquals(INPUT_NOT_NULL.getMessage(),exception.getMessage());
}
현재 이 코드의 문제점은 이미 InputHandler()를 생성한 시점에서부터 검증을 하기 때문에 exception을 불러오기 전에 미리 선언돼서 테스트가 정상적으로 통과하지 못했다. 그래서 exception이 발생한 시점에서 인스턴스를 생성하였다.
@Test
@DisplayName("입력 문자열아 비어있을 때 예외발생")
void testValidNullInput(){
//Given
String testInput = "\n";
setInput(testInput);
//When
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class,InputHandler::new);
//Then
Assertions.assertEquals(INPUT_NOT_NULL.getMessage(),exception.getMessage());
}
테스트를 잘 넘겼다.
최대한 OOP와 SOLID를 지키기 위해
디렉토리 구조를 아래 사진으로 하였다.
자세한 코드는 깃허브를 보면 될 것이다.
stringCalculatePOJO(2) - [Refactor] 인터페이스 상속 -> enum (0) | 2025.02.17 |
---|---|
AddStringPOJO(6) - Test 코드 작성 (0) | 2025.02.04 |
AddStringPOJO(5) - [Refactor] 메서드 책임 분할 (0) | 2025.02.03 |
addStringPOJO(4) - 정적 메서드로 변경 (0) | 2025.01.09 |
addStringPOJO(3) - 예외 처리 방식 변경 (0) | 2025.01.05 |