unit-testingembeddedarduinoavravr-gcc

How can I unit test Arduino code?


I'd like to be able to unit test my Arduino code. Ideally, I would be able to run any tests without having to upload the code to the Arduino. What tools or libraries can help me with this?

There is an Arduino emulator in development which could be useful, but it doesn't yet seem to be ready for use.

AVR Studio from Atmel contains a chip simulator which could be useful, but I can't see how I would use it in conjunction with the Arduino IDE.


Solution

  • In the absence of any pre-existing unit test frameworks for Arduino, I have created ArduinoUnit. Here's a simple Arduino sketch demonstrating its use:

    #include <ArduinoUnit.h>
    
    // Create test suite
    TestSuite suite;
    
    void setup() {
        Serial.begin(9600);    
    }
    
    // Create a test called 'addition' in the test suite
    test(addition) {
        assertEquals(3, 1 + 2);
    }
    
    void loop() {
        // Run test suite, printing results to the serial port
        suite.run();
    }