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