ArduinoFake icon indicating copy to clipboard operation
ArduinoFake copied to clipboard

Arduino mocking made easy

ArduinoFake

Build Status

ArduinoFake is a simple mocking framework for Arduino. ArduinoFake is based on FakeIt and can be used for testing your arduino project natively. No arduino required !

Quickstart

Includes

You should include the following header in your test file:

#include <ArduinoFake.h>

Stubbing

Assuming we have the following arduino code:

// src/main.cpp
void loop()
{
    // turn the LED on (HIGH is the voltage level)
    digitalWrite(LED_BUILTIN, HIGH);
    // wait for a second
    delay(100);
    // turn the LED off by making the voltage LOW
    digitalWrite(LED_BUILTIN, LOW);
     // wait for a second
    delay(100);
}

It can be tested using ArduinoFake:

#include <ArduinoFake.h>

using namespace fakeit;

// test/test_main.cpp
void test_loop(void)
{
    When(Method(ArduinoFake(), digitalWrite)).AlwaysReturn();
    When(Method(ArduinoFake(), delay)).AlwaysReturn();

    loop();

    Verify(Method(ArduinoFake(), digitalWrite).Using(LED_BUILTIN, HIGH)).Once();
    Verify(Method(ArduinoFake(), digitalWrite).Using(LED_BUILTIN, LOW)).Once();
    Verify(Method(ArduinoFake(), delay).Using(100)).Exactly(2_Times);
}

Checkout the examples for many more examples! Or take a look at the tests

Contributing

If you want to extend ArduinoFake library to add missing functions (for example attachInterrupt) see contribution guidelines.