googletest
C++에서 사용하는 대표적인 유닛테스트 프레임 워크
좋은 테스트
- 테스트에 필요 이상으로 제약 조건을 가하는 것은 좋지 않다, 제약 조건이 불충분한 것보다 더 나쁘다
- 좋은 테스트는 코드의 계약을 검증한다.
- 테스트 안에서 제약 조건을 과도하게 가하면 제품 코드를 자유롭게 구현하지 못한다.
- 리팩토링 및 최적화시 제약 조건이 과도한 테스트와 코드의 계약을 충족하기 위해 많은 시간을 투자해야 한다.
- 하나의 테스트에서 둘 이상의 속성을 확인할 필요가 없음을 명심해야 한다. 한 번의 테스트에서 한 가지만 검증하는 것이 좋은 스타일이다. 그렇게 하면 테스트에서 버그가 수십개 발생하는 대신 한두 개의 테스트 중단으로 그칠 수 있다
- 테스트 이름은 테스트의 목적, 테스트에서 확인하는 내용을 표현 해야 한다.(테스트 로그 자체에서 무엇이 잘못되었는지 쉽게 추측 가능)
- 기본적으로 ON_CALL을 사용하고 실제로 호출이 이루어졌는지 확인하려는 경우에만 EXPECT_CALL을 사용 해야한다.
- 맹목적으로 EXPECT_CALL(...)을 추가하여 설계에 제약을 가하면 안된다. 관리하기 힘든 테스트를 갖게 된다.