我在Ubuntu 16.04和Eclipse 4.7.2下使用Ceedling。到目前为止,一切正常,但我不能让ExpectWithArray模拟函数正常工作。
例如,我需要模拟以下函数。在我的测试文件中,我有以下调用void TestFunc(uint8_t * data);
我也尝试过为uint8_t TEST_DATA[5] = { 0xFF, 0x00, 0xA0, 0x00, 0x09 };TestFunc_ExpectWithArray(TEST_DATA, 5)提供不同的值,但没有成功。
当我试图运行测试时,它总是失败

implicit declaration of function ‘TestFunc_ExpectWithArray’ [-Wimplicit-function-declaration]

根据我的经验,当要模拟的函数没有用正确的参数调用并且CMock无法生成模拟版本时,总是会发生这种情况。我做错什么了?有人能举例说明如何正确使用ExpectWithArray吗?

最佳答案

添加此行-:在.yml-file中为插件添加数组

    :cmock:
    :mock_prefix: mock_
    :when_no_prototypes: :warn
    :enforce_strict_ordering: TRUE
    :plugins:
       - :array
       - :ignore
       - :callback

使用ExpectWithArray的示例
/测试/测试示例.c
    #include "unity.h"
    #include "temp.h"
    #include "mock_example.h"

    void setUp(void)
    {
    }

    void tearDown(void)
    {
    }

    void test_sendMesFirst(void)
    {
        uint8_t message[] = {"Hello"}, answerMessage[] = {"Hello"}, answerNum = 4;
        sendBytes_ExpectWithArray(answerMessage, sizeof(message), answerNum);
        sendMes(message, sizeof(message), answerNum);
    }

/src/示例.h
   #ifndef example_H
   #define example_H

   #include "stdint.h"

   void sendBytes(uint8_t *bytes, int size);

   #endif //

/src/温度c
    #include "temp.h"
    #include "example.h"


    void sendMes(uint8_t *mes, int size, int num)
    {
        if(num < size)
            sendBytes(mes, num);
        else
            sendBytes(mes, size);
    }

/src/温度h
    #ifndef temp_H
    #define temp_H

    #include "stdint.h"

    void sendMes(uint8_t *mes, int size, int num);
    #endif

09-03 17:43