C++ Best Practices (1) - Unit test를 쓰시죠!

기존의 개발 방법

보통 우리가 코드를 개발하는 방법은 다음과 같습니다.

  • 생각한다.
  • 코드로 옮긴다.
  • 주어진 환경에서 작동하는지 확인한다.
  • 될때까지 수정한다.

내가 짠 코드가 작동하는걸 보고 신나서 스크린샷 찍은 다음, GitHub Pull Request에 ‘잘 돌아갑니다~~’ 하고 스크린샷을 첨부합니다.

근데 이 코드가 정말 좋은 코드일까요?

코드가 딱 정해진 상황에서만 의도했던대로 작동해야하지, 그 외의 상황에서도 작동한다면 그건 버그입니다.

내가 딱 원하는 상황에서만 돌아가는 코드라고 확신할 수 있나요?

비슷하지만 조금 다른 환경에서는 작동하지 않을거라는 확신이 있나요?

 


자동 테스트 프레임워크

‘내 코드가 제대로 작동하는 코드인가?’에 대한 답변

C++ 코드를 테스트하기 위한 프레임워크들이 있습니다.

  • Catch2
  • doctest
  • Google Test
  • Boost.Test

테스트 프레임워크를 처음 써보는거라면 제가 만든 Google Test 프레임워크를 사용한 데모를 써보시는걸 강력 추천합니다.

프레임워크는 아무거나 써도 상관이 없습니다만, 하나에 묶여서 다른 프레임워크를 사용하는데에 거부감이 느껴지면 안됩니다.

코드 퀄리티를 높이기 위해 테스트 프레임워크는 필수라고 보셔야합니다.

CppCast에서 Oleg Rabaev는 이렇게 말했습니다.

  • 당신의 코드가 테스트하기 어려운 코드라면, 그 코드는 제대로 설계가 된 코드가 아닐것이다.
  • 당신의 코드가 테스트하기 쉬운 코드라면, 그 코드는 제대로 설계가 되었다는 신호를 보여준다.
  • 당신의 코드가 제대로 설계가 되었다면, 그 코드는 테스트하기 쉬울 것이다.

 


실전

현재 작성중인 코드에 자동 테스트 프레임워크를 적용해보세요.