현재 테스트가없는 상당히 큰 C 라이브러리에서 작업하고 있습니다. API가 최종적으로 시작되면서 단위 테스트를 작성하고 싶습니다.유닛 테스트 C 라이브러리, 메모리 관리
거의 모든 내 기능은 첫 번째 매개 변수 (구조체)에서 작동합니다.
단위 테스트에 대한 순진한 접근 방식은 알려진 상태의 pre 함수 호출 구조를 갖고 함수를 호출 한 다음 예상 호출 구조를 예상 결과와 비교하는 것입니다.
이제 스칼라 유형으로 구성된 구조에서 작동하지만 할당 된 메모리에 대해서는 어떤 접근 방식을 사용하고 있는지 궁금합니다.
예를 들어, 당신이 할 때, 이미지의 구조를 상상 :
CreateImage(&img, x, y);
를 예상 한 img->을 X X, img-> y를 y를 수하고 img-> 픽셀 포인터로 x * y * sizeof(pixel)
을 수용하기에 충분히 큰 것으로
처음 두 개를 확인하는 것은 간단하지만 img-> 픽셀은 무엇입니까? 나는 overload malloc을 사용할 수 있기 때문에 malloc 호출이 성공했는지 확인하지는 않지만 malloc이 제대로 호출되었는지 알고 싶습니다.
이 그런 경우에 특히 중요하다 :
CreateImage(*img, x, y)
{
img->x = x; img->y = y;
/* do something, dhoo, that something is broken and modify x or y */
img->pixels = malloc(x * y * sizeof(pixel)); /* wrong allocation size */
if(!img->pixels) error("no memory");
}
내가 내 질문에 분명하다 바랍니다.
감사합니다.
malloc의 mock 버전은 테스트 장치에 호출 된 것을 알려 줄 수 있어야합니다. 그래서 당신은 그것이 일어날 일과 비교할 수 있습니다. –