킹의 개발일지

JUnit, Mockito 및 MockMvc를 사용한 스프링 부트 단위 테스트(2) 본문

Junit

JUnit, Mockito 및 MockMvc를 사용한 스프링 부트 단위 테스트(2)

k1ng 2022. 6. 10. 00:49

TDD (Test Driven Development)

전통적인 개발 방법으로 첫째로 앱을 디자인하고 그것에 대한 코드를 작성하고 마지막으로 앱을 테스트한다.

 

테스트 주도 개발은 이러한 전통적인 개발 방법을 뒤집는 방식으로 시작한다.

 

테스트 주도개발은 실패하는 테스트를 먼저 시작한다.

 

아무것도 없는 상태에서 테스트를 하면 당연히 실패할것이다.

 

이에 우리는 이 실패한 테스트를 통과하도록 코드를 작성한다.

 

그러나 작성한 코드는 테스트를 성공시키고자 만든 급조한 코드이기에 리팩토링해야한다.

 

두번째 단계에서 작성한 코드는 테스트를 단순히 통과하고자 만든 코드이기에 소위 냄새나는 코드일지도 모른다.

 

때문에 우리는 리팩토링 단계를 통해 코드를 향상시켜야한다.

테스트 주도 개발의 순환

테스트 주도 개발을 진행할 때 위 단계를 끊임없이 순환한다.

 

테스트 주도 개발의 장점

  • TODO리스트처럼 테스트나 개발해야할 작업들을 명확히 해준다.
  • 리팩토링을 하는데 있어서 안전망을 제공한다. 테스트 코드를 작성하고 틀린 방향으로 리팩토링을 한들 테스트 코드를 통과하지 못한다면 잘못된 리팩토링임을 바로 알 수 있다.
  • 점진적으로 코드를 개선해 나갈수 있다.

 

테스트 주도 개발은 위에 서술한 것보다 더 많은 장점이 있는 개발 방식이다.

 

머리속으로 당연하다고만 생각하면서 테스트 케이스를 작성하지 않으면 나중에 수많은 코드속에서 에러를 찾는 나 자신을 발견할 수 있을 것이다.

 

테스트 주도 개발은 내가 작성한 코드가 당연하다고 생각하지않고 테스트케이스를 계속 써보면서 늘려가는 수밖에 없다고 생각한다.