Test static function after 'Extract Method' refactor of larger function

84 Views Asked by At

I have a large function, like the following:

void processMsg(uint8_t *msg) {
    //Some structure initialisation, msg parsing and the like

    for (int i=0;i<msgRegisters;++i) {
        //Process each message register
    }
}

and I have refactored the code, extracting a method, into the following:

static void processMsgRegister(uint8_t *msg, int i)
{
    //Process one register
}

void processMsg(uint8_t *msg) {
    //Some structure initialisation, msg parsing and the like

    for (int i=0;i<msgRegisters;++i) {
        processMsgRegister(msg, i);
    }
}

Now, I want to unit test this functions.

I can easily test processMsg since it is publicly available from the .h, and I have done the necessary tests for checking that the structure initialisation and parsing is correct.

The problem comes with testing the processMsgRegister internal function. I want to test it alone, without having to test each time all the processMsg external function, since I have to clutter the tests with all the msg processing callbacks, expectations and so, for no point, since it is already tested by itself.


After some comments, I think the best approach would be to move this methods to a new class, making them public there, but not publishing the class, so it can be tested independently from the rest.

So my question now is:

  • How can I implement this approach in plain C?

This question is both, from a point of view of code organisation (spliting into multiple files, and so) and from a point of view of useful compiler/linker flags for this matter.

My setup: gcc, cmake, unity, cmock

0

There are 0 best solutions below