Testlibraries¶
GOOGLETEST · ENV:NATIVE · MOCKS · ÉÉN TESTBESTAND
MeshCore heeft één testomgeving, één testbestand en één geteste functie. Dit hoofdstuk beschrijft hoe die is opgezet en hoe klein hij is — als cijfer, niet als oordeel.
[!NOTE] Bron. Deze pagina is geverifieerd tegen de firmware zelf:
MeshCorev1.16.0, commit03b6ef4, 28 juli 2026 — bestandenplatformio.inir.158-168,test/test_utils/test_tohex.cppentest/mocks/.
Hoe MeshCore deze groep aanroept¶
De testomgeving staat los van alle andere. Hij erft niet van
[arduino_base], gebruikt geen Arduino-framework en compileert bijna niets
van de firmware mee:
platformio.ini r.158-168
[env:native]
platform = native
build_flags = -std=c++17
-I src
-I test/mocks
test_build_src = yes
build_src_filter =
-<*>
+<../src/Utils.cpp>
lib_deps =
google/googletest @ 1.17.0
Vier dingen vallen daaraan op. platform = native betekent: compileren voor
de computer waar je op werkt, niet voor een microcontroller. Het
build_src_filter sluit eerst alles uit en laat daarna één bestand toe,
src/Utils.cpp. Het includepad zet test/mocks vóór de echte libraries.
En googletest is exact vastgepind op 1.17.0.
google/googletest¶
googletest is het testraamwerk van Google voor C++. Een test schrijf je als
een TEST(groep, naam)-blok met daarin controles als EXPECT_STREQ en
EXPECT_EQ; het raamwerk verzamelt ze, draait ze en rapporteert wat er
faalde. Het is geen Arduino-library — het registrypakket bevat geen
library.properties of library.json, en het draait hier dan ook op een
gewone computer.
Het enige testbestand is test/test_utils/test_tohex.cpp:
test/test_utils/test_tohex.cpp r.1-15
#include <gtest/gtest.h>
#include "Utils.h"
using namespace mesh;
#define HEX_BUFFER_SIZE(input) (sizeof(input) * 2 + 1)
TEST(UtilsToHex, ConvertSingleByte) {
uint8_t input[] = {0xAB};
char output[HEX_BUFFER_SIZE(input)];
Utils::toHex(output, input, sizeof(input));
EXPECT_STREQ("AB", output);
}
Geteste functie: Utils::toHex, die bytes omzet naar een hexadecimale
string.
De mocks¶
src/Utils.cpp includeert <AES.h> en <SHA256.h> uit rweather/Crypto.
Die library is een Arduino-library en compileert niet zomaar op een gewone
computer. In test/mocks/ staan daarom vervangers: AES.h, SHA256.h en
Stream.h. Het -I test/mocks in de bouwvlaggen zorgt dat de compiler die
eerder vindt dan de echte.
Het gevolg is dat de testbuild de cryptografische code niet test — hij test
toHex in een omgeving waarin crypto en Stream leeg zijn.
Wat de testdekking is¶
In cijfers, bij commit 03b6ef4:
| Aantal | |
|---|---|
| Testomgevingen | 1 ([env:native]) |
| Testbestanden | 1 |
| Meegecompileerde firmwarebestanden | 1 (src/Utils.cpp) |
| Geteste functies | 1 (Utils::toHex) |
| Mocks | 3 (AES.h, SHA256.h, Stream.h) |
Ter vergelijking: de repo telt 590 bronbestanden met de extensie .h,
.hpp, .c, .cpp of .ino.
Overzicht¶
| Library | Versie | Omgeving | Route |
|---|---|---|---|
google/googletest |
1.17.0 |
[env:native] |
registry, exact vastgepind |