단위 테스트에 Cmocka을 사용하고 있으며 변경할 수 없습니다.Cmocka는 내 (void) 콜백 함수가 올바른 매개 변수로 호출되었는지 테스트 할 수 있습니까?
콜백 함수를 호출하는 소프트웨어의 일부를 테스트하고 있는데, 값이 변경되면 변경된 데이터 항목과 새 값을 나타냅니다. 단위 테스트에 대한
typedef void (* Value_changed_call_back) (int item_Id, int new_value);
, 나는 몇 가지 콜백 함수를 등록하고 실제로 호출하고 있는지 확인하려면, 그들이 올바른 매개 변수를받을 수 :
콜백 기능이 서명을해야합니다.
올바른 매개 변수로 호출되었는지 확인하기 위해 expect_int()
을 사용할 수 있습니다.
하지만 콜백 함수의 형식이 void
이고 변경할 수 없기 때문에 will_return()
을 어떻게 사용할 수 있는지 알지 못합니다.
모의 콜백 함수를 선언하고 올바른 매개 변수로 호출되는지 확인하려면 어떻게해야합니까? 함수가 호출되지 않으면 테스트가 실패해야합니다.
당신은 유일하게 대답하는 Sicne입니다, 나는 당신에게 quesition과 보너스 포인트를 수여 할 것입니다. 그렇지 않으면 시스템에서 자동 포상을 지급하지만 포인트의 절반 만 받게됩니다. 스택 오버플로에 오신 것을 환영합니다. 도와 주심에 감사드립니다. – Mawg
@Mawg 감사합니다. 저는 cmocha 문서를 살펴볼 시간을 가졌습니다. 이것이 내가 생각할 수있는 유일한 해결책이었습니다. 과거에 해본 테스트에서 실행 순서를 신경 쓰면 글로벌 변수를 비슷한 방식으로 설정했습니다. –
설명서가 좋지 않습니다. 그렇습니까? 실제로 Google이 원래 개발 한 것에 대해서는 정보가 부족합니다. 그러나 GCC의 링커'wrap' 옵션을 사용하는 모의 함수가 너무나 멋져서 더 나은 시스템을 찾을 수 없다는 것을 의미합니다. – Mawg