오전

자동차 경주 미션의 step2에서 피드백을 받고 다시 코드를 리팩토링했다.
그 과정에서 공부했던 내용을 적어보고자 한다.

 

예외를 던지지 않는 것을 테스트하는 것

그동안 예외에 대한 테스트는 아래와 같이 assertThatThrownBy()의 인자로 예외를 발생시키는 코드를 전달하고, isInstanceOf 연산을 통해 에상한 예외가 맞는지 확인했다.
assertThatThrownBy(() -> new Car("carName")).isInstanceOf(IllegalArgumentException.class)
Car는 생성자에서 전달받은 이름의 길이가 6이상이면 IllegalArgumentException을 발생시키도록 작성되었다.

 

자동차 경주 미션의 피드백에서 예외를 발생시키는 경우는 테스트를 했는데 예외를 발생시키지 않는 경우는 왜 테스트하지 않나요? 라는 말을 들었다.

 

당연한 말이다. 정상적으로 메서드가 실행되었을 때 예외를 던지지 않는지도 테스트 해야한다.
예외를 던지지 않는지 테스트하는 메서드를 찾던 중 doesNotThrowAnyException 메서드를 찾았으며 아래와 같이 사용해 보았다.

assertThatThrownBy(() -> new Car("name")).doesNotThrownAnyException

결과는 다음과 같았다.

Expecting code to raise a throwable.

예외를 던지지 않아 오류가 났다는 뜻이다.

 

assertThatThrownBy() 메서드의 구현부를 찾아가 보니 다음과 같이 구현되어 있었다.
return assertThat(catchThrowable(shouldRaiseThrowable)).hasBeenThrown();
hasBeenThrown은 예외를 발생시키지 않으면 예외를 발생시키는 메서드이다.
assertCodeThat()는 아래와 같이 assertThatThrownBy의 구현에서 hasBeenThrown()가 빠져있다.
return assertThat(catchThrowable(shouldRaiseThrowable));

 

즉, 이 메서드는 예외를 던지지 않아도 괜찮기 때문에 이 메서드로 테스트를 하기로 했다.

따라서 다음과 같이 예외를 발생시키지 않는 경우를 테스트 할 수 있었다.
assertThatCode(() -> new Car("name")).doesNotThrowAnyException();

 

오후

우테코의 전통(?)인 연극이 시작되었다. 프로그래밍과 관련된 주제로 밈을 넣어서 표현하는 연극이었는데, 시작부터 매우 강렬했다.
뉴진스의 하입보이를 추던 장면이 잊혀지지가 않는다.
우리 조는 마지막 순서였는데 연극을 즐기다 보니 우리 순서가 금방 다가왔다.
우리는 어떤 연극을 했냐면...

.
.
.

연극을 준비 하면서도 사실 바빠서 연극에 시간을 할애하기가 아깝다는 생각도 들었다. (그래도 열심히 했음)
그래도 끝나고 나니 연극이 소프트 스킬을 길러준다는 관점에서 좋은 경험이었다고 생각한다.
+ 다른 크루들과도 더 친해질 수 있겠다는 생각을 했다.

'회고 > 우아한테크코스' 카테고리의 다른 글

2023.2.15 일일 회고  (0) 2023.02.15
2023.02.14 일일 회고  (0) 2023.02.15
2023.2.10 회고  (0) 2023.02.10
2023.2.9 회고  (0) 2023.02.10
2023.2.8 회고  (0) 2023.02.09

+ Recent posts