У меня есть проект Embedded C / C ++, и я хочу написать для него модульные тесты с CppUTest.Один простой тест, который я хочу сделать, - убедиться, что во время теста вызывается определенная функция C.
Допустим, у меня есть две функции C, определенные в function.h
:
void success(void)
{
// ... Do Something on success
}
void bid_process(void)
{
bool happy = false;
// ... processing modifiying 'happy' and setting it to 'true'
if (happy)
success(); // Call to success
}
Я хочу протестировать функцию big_process
и хочу, чтобы мой тест не прошел, если success
не вызывается.
Для этого я написал несколько CppUTests в отдельном тестовом файле test.cpp :
#include <CppUTest/CommandLineTestRunner.h>
#include "CppUTest/TestHarness.h"
#include "CppUTestExt/MockSupport.h"
#ifdef __cplusplus
extern "C"
{
#include "function.h"
}
#endif
TEST_GROUP(TestGroup)
{
void teardown()
{
mock().clear();
}
};
TEST(TestGroup, Test_big_process)
{
mock().expectOneCall("success"); // success should be called by the call to big process
big_process();
mock().checkExpectations();
}
Я проверил вручную, что big_process
работает нормально и вызывает success
, но теперь я хочу, чтобы мой тест сделал это.Но тест не пройден и говорит мне:
Mock Failure: Expected call did not happen.
EXPECTED calls that did NOT happen:
success -> no parameters
Поэтому мой вопрос прост: как обеспечить вызов success
во время big_process
?