1

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ですか?

4

3 に答える 3