I want to test my src code on the embedded device and natively.
The problem is that there is a lot hardware related stuff that makes it hard to separate the two tests.
I have for example a function in a class that is only building the path for writing to an SD card. If I only want to test this one now natively, what would be the best method to do this?
Currently my platformio.ino looks like this:
; Latest stable version
[env:native]
platform = native
test_ignore =
*Embedded*
*embedded*
build_flags = -std=gnu++11
lib_deps =
bblanchon/ArduinoJson@^6.18.5
ArduinoFake
lib_ldf_mode=chain+
test_build_project_src = true
#only include Statistics for now for native platform, because the rest is not compilable with the libraries needed atm
src_filter = +<*> -<.git/> -<.svn/> -<Led/>
[env:nano33iot]
board = nano_33_iot
#targets = upload, monitor
framework = arduino
board_build.mcu = SAMD21
platform = atmelsam
test_ignore =
*native*
*Native*
test_build_project_src = true
lib_deps =
sparkfun/SparkFun VCNL4040 Proximity Sensor Library @ ^1.0.2
sparkfun/SparkFun I2C Mux Arduino Library @ ^1.0.1
bblanchon/StreamUtils@^1.6.1
rweather/Crypto @ ^0.2.0
rweather/CryptoLW @ ^0.2.0
jandrassy/StreamLib@^1.1.0
arduino-libraries/ArduinoMDNS@^0.0.0
adafruit/Adafruit MCP23017 Arduino Library@^1.3.0
sparkfun/SparkFun ATECCX08a Arduino Library@^1.3.0
bblanchon/ArduinoJson@^6.18.3
greiman/SdFat@^2.1.0
arduino-libraries/WiFiNINA@^1.8.13
I basically excluded everything for native with the src_filter and test_build_project_src = true to built from the src folder when testing, but this is not a real solution to this problem.
For example I get the following error atm:
In file included from src/Logs/logs.cpp:1:
In file included from src/Logs/logs.h:8:
src/TableConfig/sd_card_handler.h:4:10: fatal error: 'SdFat.h' file not found
#include "SdFat.h"
The problem is, that I don’t know how to predefine something only for native tests like:
#if defined(NATIVE_TEST)
#include <SdFat_mocked.h>
#endif
because then I could do something like:
#if defined(NATIVE_TEST)
#include <SdFat_mocked.h>
#else
#include <SdFat.h>
#endif
But this also feels very cumbersome. How do you this the right way?