Embedded C/C++ プロジェクトがあり、CppUTest を使用して単体テストを作成したいと考えています。私がやりたい簡単なテストの 1 つは、テスト中に特定の C 関数が呼び出されることを確認することです。
で定義された 2 つの 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
ですか?