다음 주에 부서 테스트와 유닛 테스트 및 테스트 중심 개발에 대해 이야기 할 예정입니다. 이것의 일부로, 최근에 작성한 일부 코드에서 실제 예제를 보여 드리겠습니다. 그러나 대화에서 쓸 매우 간단한 예제도 보여주고 싶습니다.
웹에서 좋은 예를 찾고 있었지만 개발 영역에 특히 적합한 것을 찾기 위해 고심하고 있습니다. 우리가 작성하는 거의 모든 소프트웨어는 소형 마이크로 컨트롤러에서 실행되는 깊게 내장 된 제어 시스템입니다. 'bottom'레이어에서 벗어나지 않는 한 단위 테스트에 쉽게 적용 할 수있는 많은 C 코드가 있습니다 (목표 자체가 아닌 PC에서 단위 테스트에 대해 이야기 할 것입니다). 마이크로 컨트롤러 주변 장치에 그러나 내가 찾은 대부분의 예제는 문자열 처리 (예 : 우수한 Din Into Python Roman numerics 예제)를 기반으로하는 경향이 있으며 문자열을 거의 사용하지 않기 때문에 실제로는 적합하지 않습니다 (코드가 일반적으로 사용하는 유일한 라이브러리 함수에 대해) 있다 memcpy, memcmp그리고 memset,strcat 또는 정규 표현식이 옳지 않습니다).
그래서 질문에 : 누구나 라이브 세션에서 단위 테스트를 시연하는 데 사용할 수있는 좋은 기능 예를 제공 할 수 있습니까? 내 의견에 대한 좋은 대답은 아마도 다음과 같습니다.
- 누구나 (때때로 코드를 작성하는 사람들조차도) 이해할 수있을만큼 간단한 기능;
- 무의미하게 보이지 않는 함수 (즉, 패리티 또는 CRC를 계산하는 것이 두 숫자를 곱하고 임의의 상수를 추가하는 함수보다 낫습니다).
- 사람들 앞에서 방에 쓸 수있을 정도로 짧은 기능 (오류를 줄이기 위해 Vim의 많은 클립 보드를 활용할 수 있습니다 ...);
- 숫자, 배열, 포인터 또는 구조를 매개 변수로 사용하고 문자열을 처리하는 대신 비슷한 것을 반환하는 함수입니다.
- 입력하기 쉬운 간단한 오류 (예 :
>대신>=) 가있는 함수 는 대부분의 경우 여전히 작동하지만 특정 경우와 관련이 있습니다 : 단위 테스트로 쉽게 식별하고 수정하십시오.
이견있는 사람?
아마도 관련이 없지만 테스트 자체는 Google Test Framework를 사용하여 C ++로 작성 될 것입니다. 모든 헤더에는 이미 #ifdef __cplusplus extern "C" {래퍼가 있습니다. 이것은 내가 지금까지 한 테스트에서 잘 작동했습니다.