{"id":7974,"date":"2025-11-29T08:22:07","date_gmt":"2025-11-29T07:22:07","guid":{"rendered":"https:\/\/web-dev-weissblau.de\/microconsult\/?p=7974"},"modified":"2026-02-13T07:36:53","modified_gmt":"2026-02-13T06:36:53","slug":"efficient-unit-testing-under-c-and-c","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/effizient-zum-unit-test-unter-c-und-c\/","title":{"rendered":"Efficient unit testing in C++ and C"},"content":{"rendered":"<h2>Praxiserprobte Wege, Embedded-Code zu isolieren und testen<\/h2>\n<p style=\"text-align: left;\" align=\"center\">Autor: Franco Chiappori, Schindler Aufz\u00fcge AG<\/p>\n<h3>Beitrag &#8211; Embedded Software Engineering Kongress 2016<\/h3>\n<p><strong>Continuous Integration und automatisierte Tests sind erprobte Mittel, um die Qualit\u00e4t von Software zu f\u00f6rdern. Gerade den automatisierten Unit-Tests kommt gro\u00dfe Bedeutung zu, garantieren sie doch als Basis der Testpyramide auch die Basis der Qualit\u00e4t. Als Entwickler sch\u00e4tzt man zudem die schnellen Feddbackzyklen von Unit-Tests. In der Praxis fangen die Probleme aber oftmals schon beim Isolieren des zu testenden Codes an. Wie l\u00f6se ich meine C++ Klasse oder meine C Funktion aus ihren Abh\u00e4ngigkeiten?<\/strong><\/p>\n<p>Die Testpyramide in Abb. 1 (siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zeigt, wie eine Applikation idealerweise durch Tests abgedeckt wird [1]. Die Basis bilden Unit-Tests, welche eine kleine Software-Einheit \u00fcberpr\u00fcfen. Schl\u00e4gt ein solcher Test fehl, kann das Problem nur in der getesteten Unit liegen. Unit-Tests sind meist einfach zu erstellen, k\u00f6nnen innerhalb weniger Sekunden ausgef\u00fchrt werden und gefundene Fehler k\u00f6nnen leicht lokalisiert werden. Daher sollte der gr\u00f6\u00dfte Teil der Funktionalit\u00e4t durch Unit-Tests abgedeckt werden. Ein Unit-Test bedingt jedoch, dass der entsprechende Code isoliert wird.<\/p>\n<h2>Standardansatz Dependency Injection<\/h2>\n<p>Die verschiedenen Ans\u00e4tze zur Isolation lassen sich am besten mit einem konkreten Beispiel aufzeigen. Im vorliegenden Projekt werden bin\u00e4re Daten \u00fcber eine UART-Schnittstelle kommuniziert. Um die einzelnen Meldungen abzugrenzen, wird das Framing des Point-to-Point Protokoll (siehe Abb. 2,\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) eingesetzt [2]. Grob zusammengefasst:<\/p>\n<ul>\n<li>Ein Flag-Byte (0x7E) wird am Anfang und Ende hinzugef\u00fcgt.<\/li>\n<li>Ein Escape-Byte (0x7D) ist definiert.<\/li>\n<li>Taucht ein Flag- oder Escape-Byte im Frame auf, wird es ersetzt mit dem Escape-Byte, gefolgt vom originalen Byte XOR 0x20.<\/li>\n<\/ul>\n<p>Ein solches Framing l\u00e4sst sich einfach in Code umsetzen. Abb. 3 (siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zeigt eine m\u00f6gliche Implementierung in C. Diese ist simpel und direkt, l\u00e4sst sich aber nur schwer f\u00fcr Unit-Tests isolieren, da sie direkt auf den UART-Treiber zugreift (uart_put).<\/p>\n<p>Eine bew\u00e4hrte Methode, um diese Problem zu umgehen, ist Dependency Injection. Der Framing-Code ben\u00f6tigt ein zeichenorientiertes Device, an das die codierten Bytes weitergereicht werden k\u00f6nnen. Wenn man diese Abh\u00e4ngigkeit von au\u00dfen vorgibt (bildlich gesprochen einimpft), spricht man von Dependency Injection. Abb. 4 (siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zeigt eine m\u00f6gliche Implementierung in C++.<\/p>\n<p>Mit dieser Erweiterung l\u00e4sst sich der Code relativ einfach isolieren. Anstelle des UART wird beim Unit-Test ein sogenanntes Mock-Objekt mitgegeben. Dieses Objekt implementiert die Device-Schnittstelle, aber speichert die geschriebenen Zeichen, damit sie vom Unit-Test inspiziert werden k\u00f6nnen. Abb. 5 (siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zeigt das zugeh\u00f6rige Klassendiagramm, ein m\u00f6glicher Unit-Test ist in Abb. 6 (siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) aufgelistet.<\/p>\n<p>Mit Hilfe von Dependency Injection und Mock-Objekten lassen sich Abh\u00e4ngigkeiten durchbrechen, und nahezu jeder Code kann f\u00fcr Unit-Tests isoliert werden. Doch die Bedeutung von Dependency Injection geht weit \u00fcber das Thema Unit-Test hinaus. Im Prinzip geht es darum, einzelne Problembereiche zu trennen (Separation of Concerns). Das Framing an sich hat nichts mit dem UART zu tun. Dank Dependency Injection k\u00f6nnen diese Aspekte auch im Design sauber getrennt werden.<\/p>\n<p>Diese Vorteile haben aber einen gewissen Preis. Durch die zus\u00e4tzliche Abstraktion geht Kontextinformation verloren. Es ist nicht mehr auf den ersten Blick ersichtlich, wozu das Framing eingesetzt wird. Zudem muss mehr Code erstellt, dokumentiert und gewartet werden. Im vorliegenden Beispiel ist das nicht viel, aber in einem echten Projekt gibt es hunderte von Abh\u00e4ngigkeiten, und entsprechend viele Schnittstellen m\u00fcssen abstrahiert werden. F\u00fcr den Unit-Test an sich ergibt sich auch ein gewisser Aufwand, die Mock-Objekte m\u00fcssen implementiert und aufgesetzt werden.<\/p>\n<h2>Mock-Objekte vermeiden durch Trennung von Kernlogik und Vernetzung<\/h2>\n<p>Wie im Unit-Test Code von Abb. 6 (siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) ersichtlich, bedeutet der Einsatz von Mock-Objekten immer einen gewissen Aufwand und macht den Test komplexer. Man kann umgekehrt fragen: Welcher Code l\u00e4sst sich m\u00f6glichst direkt und ohne Aufwand testen? Die Antwort ist nicht schwer: Reine Funktionen ohne Abh\u00e4ngigkeiten und Seiteneffekte sind am einfachsten zu testen. Der Output h\u00e4ngt nur vom Input ab, und es gibt keine Abh\u00e4ngigkeiten, die uns das Leben schwermachen.<\/p>\n<p>Wenn Code aus diesem Blickwinkel betrachtet wird, kann man oft feststellen, dass Klassen und Funktionen zwei Aspekte haben. Zum einen eine Kernlogik, welche die Verarbeitung von Daten und Events festlegt. Zum anderen eine Vernetzung, welche den Code mit seiner Umwelt verkn\u00fcpft. Im Framing Beispiel ist die Kernlogik das Erstellen des Frames, w\u00e4hrend die Verkn\u00fcpfung das Weiterleiten an den UART ist. Diese zwei Aspekte lassen sich trennen, wie in Abb. 7 (siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) gezeigt.<\/p>\n<p>Durch diese Trennung entf\u00e4llt das Mock-Objekt und der Unit-Test wird vereinfacht (Abb. 8, siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>). Der Code f\u00fcr die Vernetzung ist oft so banal, dass kein eigener Unit-Test n\u00f6tig ist. Dieser Ansatz ist auch als Humble Object Pattern bekannt [3].<\/p>\n<h2>Herausforderungen beim Test von laufzeitkritischem Treibercode<\/h2>\n<p>Im vorliegenden Projekt wurde zun\u00e4chst Kernlogik und Vernetzung wie in Abb. 7 (siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) getrennt. Performance-Messungen auf dem Zielsystem ergaben jedoch, dass dieser Code bei weitem zu langsam war. Neben anderen Faktoren kostete das mehrfache Kopieren der Daten und der Funktionsaufruf f\u00fcr jedes gesendete Byte zu viel Zeit. Man war gezwungen, die Logik in die Treiberschicht zu verschieben. Nach mehreren Optimierungsschritten sah der Treibercode wie in Abb. 9 (siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) aus.<\/p>\n<p>Dieser optimierte Code stellt dem Unit-Test drei H\u00fcrden in den Weg. Erstens wird der Treibercode auf dem PC nicht mitkompiliert. Zweitens kollidieren Definitionen im referenzierten\u00a0<span class=\"quellcode\">registers.h\u00a0<\/span>mit anderen Header-Dateien. Drittens werden Daten direkt in UART Register geschrieben: die Adresse von\u00a0<span class=\"quellcode\">UartaRegs.txFifo\u00a0<\/span>entspricht auf dem Target der Registeradresse des Sende-FIFO.<\/p>\n<h2>L\u00f6sungsansatz Treibercode patchen<\/h2>\n<p>Der erste L\u00f6sungsansatz war es, den Treibercode f\u00fcr den Unit-Test zu patchen. Mit einem gezielten Patch wurden das\u00a0<span class=\"quellcode\">#include<\/span>\u00a0abge\u00e4ndert sowie die direkten Zugriffe auf die UART Register durch Funktionsaufrufe ersetzt. Das resultierende File wurde auf dem PC kompiliert und getestet. Vorteil dieses Ansatzes ist, dass man den Treibercode beliebig manipulieren kann, um ihn testf\u00e4hig zu machen. Auf der anderen Seite gibt es auch viele Nachteile. Wird der Treibercode ge\u00e4ndert, muss der Patch angepasst werden. Da Codeteile ersetzt werden, k\u00f6nnen Fehler verdeckt werden. In der Praxis stellte sich heraus, dass die Tests br\u00fcchig waren und immer wieder geflickt werden mussten.<\/p>\n<h2>L\u00f6sungsansatz Source-File inkludieren<\/h2>\n<p>Ein zweiter L\u00f6sungsansatz besteht darin, das Source-File des Treibers im Unit-Test zu inkludieren. So wird die erste H\u00fcrde, das Mitkompilieren des Treibercodes, \u00fcberwunden. Um die zweite H\u00fcrde zu nehmen, kann das\u00a0<span class=\"quellcode\">#include<\/span>\u00a0im Treiber an eine Bedingung angekn\u00fcpft werden (siehe Abb. 10,\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>). Im regul\u00e4ren Code wird das Symbol\u00a0<span class=\"quellcode\">UNIT_TEST<\/span>\u00a0nie definiert, und\u00a0<span class=\"quellcode\">registers.h<\/span>\u00a0wird inkludiert. Im Unit-Test kann dieses Symbol definiert werden, um das\u00a0<span class=\"quellcode\">#include<\/span>\u00a0zu unterdr\u00fccken.<\/p>\n<p>Technisch am interessantesten ist die dritte H\u00fcrde. Wie kann der Zugriff auf eine Variable abgefangen werden? Der zu testende Code schreibt w\u00e4hrend einem Aufruf mehrfach auf das Register, und der Test muss nicht nur das letzte Byte, sondern alle geschriebenen Bytes kennen. Hier kommt C++ und seine m\u00e4chtigen Sprachmittel zu Hilfe. Es wird eine Klasse\u00a0<span class=\"quellcode\">FakeFifo<\/span>\u00a0definiert, die den Zuweisungsoperator f\u00fcr uint8_t \u00fcberschreibt. Anschlie\u00dfend kreiert man ein Objekt von diesem Typ unter\u00a0<span class=\"quellcode\">UartaRegs.txFifo<\/span>, so dass der Treibercode auf das\u00a0<span class=\"quellcode\">FakeFifo<\/span>\u00a0schreibt. Abb. 11 (siehe\u00a0<a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zeigt den gesamten Code, inklusive eines Unit-Tests.<\/p>\n<p>Mit diesem Ansatz kann der originale Treibercode mit minimalsten Anpassungen ausgiebig getestet werden. Das funktioniert auch in die andere Richtung, wenn Daten aus einem FIFO Register gelesen werden. Hierzu muss die Klasse\u00a0<span class=\"quellcode\">FakeFifo<\/span>\u00a0den Umwandlungsoperator f\u00fcr uint8_t \u00fcberschreiben.<\/p>\n<h2>Fazit<\/h2>\n<p>Mit ein paar kleinen Tricks aus der Schatulle von C\/C++ l\u00e4sst sich auch hardwarenaher und laufzeitkritischer C-Code effizient testen. Auf Stufe Unit-Test kann so die Logik auf Herz und Nieren gepr\u00fcft werden. F\u00fcr weniger laufzeitkritischen Code empfiehlt sich das Humble Object Pattern, um Kernlogik und Vernetzung zu trennen. Dies f\u00fchrt zu verst\u00e4ndlichem und leicht testbarem Code. All diese Techniken erm\u00f6glichen es, die Testabdeckung zu erh\u00f6hen. Eine Abdeckung von 100% kann nicht erreicht werden, aber, um es mit den Worten von Martin Fowler zu sagen [4]: &#8222;Es ist besser, unvollst\u00e4ndige Tests zu schreiben und laufen zu lassen, als vollst\u00e4ndige Tests bleiben zu lassen&#8220;.<\/p>\n<h2>Literatur- und Quellenverzeichnis<\/h2>\n<p>[1]\u00a0 Mike Cohn:\u00a0<em>Succeeding with Agile<\/em>. Addison-Wesley, 2009<br \/>\n[2]\u00a0 W. Simpson, Editor:\u00a0<em>RFC1662, PPP in HDLC-like Framing<\/em>. IETF, July 1994<br \/>\n[3]\u00a0 Gerard Meszaros:\u00a0<em>xUnit Test Patterns<\/em>. Addison-Wesley, 2007<br \/>\n[4]\u00a0 Martin Fowler:\u00a0<em>Refactoring<\/em>. Addison-Wesley, 1999<\/p>\n<p><a title=\"Effizient zum Unit-Test unter C++ und C (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/test_qualitaet_effizient_zum_unit-test_unter_c_und_c_schindler_aufzuege_chiappori.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Beitrag als PDF downloaden<\/strong><\/a><\/p>\n<hr \/>\n<h2>Test, Qualit\u00e4t &amp; Debug &#8211; unsere Trainings &amp; Coachings<\/h2>\n<p><strong>Wollen Sie sich auf den aktuellen Stand der Technik bringen?<\/strong><\/p>\n<p>Dann informieren Sie sich\u00a0<a title=\"Test &amp; Debug Training und Coaching\" href=\"https:\/\/www.microconsult.de\/alle-trainings-termine-komplettuebersicht\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>zu Schulungen\/ Seminaren\/ Trainings\/ Workshops und individuellen Coachings von MircoConsult zum Thema Test, Qualit\u00e4t &amp; Debug.<\/p>\n<p><strong>Training &amp; Coaching zu den weiteren Themen unseren Portfolios finden Sie\u00a0<a title=\"Training &amp; Beratung - alle Themen\" href=\"https:\/\/www.microconsult.de\/training-beratung\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n<hr \/>\n<h2>Test, Qualit\u00e4t &amp; Debug -Fachwissen<\/h2>\n<p>Wertvolles Fachwissen zum Thema\u00a0Test, Qualit\u00e4t &amp; Debug steht\u00a0<a title=\"Test und Debug\" href=\"https:\/\/www.microconsult.de\/test-und-debug\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>f\u00fcr Sie zum kostenfreien Download bereit.<\/p>\n<p><a title=\"Test und Debug\" href=\"https:\/\/www.microconsult.de\/test-und-debug\/\" target=\"_blank\" rel=\"noopener\"><strong>Zu den Fachinformationen<\/strong><\/a><\/p>\n<p><strong>Fachwissen zu weiteren Themen unseren Portfolios finden Sie <a title=\"Fachinformationen\" href=\"https:\/\/www.microconsult.de\/fachwissen\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Praxiserprobte Wege, Embedded-Code zu isolieren und testen Autor: Franco Chiappori, Schindler Aufz\u00fcge AG Beitrag &#8211; Embedded Software Engineering Kongress 2016 Continuous Integration und automatisierte Tests sind erprobte Mittel, um die Qualit\u00e4t von Software zu f\u00f6rdern. Gerade den automatisierten Unit-Tests kommt gro\u00dfe Bedeutung zu, garantieren sie doch als Basis der Testpyramide auch die Basis der Qualit\u00e4t. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-7974","post","type-post","status-publish","format-standard","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Effizient zum Unit-Test unter C++ und C - MicroConsult Academy GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microconsult.de\/en\/efficient-unit-testing-under-c-and-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Effizient zum Unit-Test unter C++ und C - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Praxiserprobte Wege, Embedded-Code zu isolieren und testen Autor: Franco Chiappori, Schindler Aufz\u00fcge AG Beitrag &#8211; Embedded Software Engineering Kongress 2016 Continuous Integration und automatisierte Tests sind erprobte Mittel, um die Qualit\u00e4t von Software zu f\u00f6rdern. Gerade den automatisierten Unit-Tests kommt gro\u00dfe Bedeutung zu, garantieren sie doch als Basis der Testpyramide auch die Basis der Qualit\u00e4t. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/efficient-unit-testing-under-c-and-c\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-29T07:22:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-13T06:36:53+00:00\" \/>\n<meta name=\"author\" content=\"weissblau media\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"weissblau media\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/effizient-zum-unit-test-unter-c-und-c\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/effizient-zum-unit-test-unter-c-und-c\\\/\"},\"author\":{\"name\":\"weissblau media\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"headline\":\"Effizient zum Unit-Test unter C++ und C\",\"datePublished\":\"2025-11-29T07:22:07+00:00\",\"dateModified\":\"2026-02-13T06:36:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/effizient-zum-unit-test-unter-c-und-c\\\/\"},\"wordCount\":1477,\"commentCount\":0,\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/effizient-zum-unit-test-unter-c-und-c\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/effizient-zum-unit-test-unter-c-und-c\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/effizient-zum-unit-test-unter-c-und-c\\\/\",\"name\":\"Effizient zum Unit-Test unter C++ und C - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"datePublished\":\"2025-11-29T07:22:07+00:00\",\"dateModified\":\"2026-02-13T06:36:53+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/effizient-zum-unit-test-unter-c-und-c\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/effizient-zum-unit-test-unter-c-und-c\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/effizient-zum-unit-test-unter-c-und-c\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Effizient zum Unit-Test unter C++ und C\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/\",\"name\":\"MicroConsult Academy GmbH\",\"description\":\"Professionelle Schulungen, Beratung und Projektunterst\u00fctzung\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microconsult.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\",\"name\":\"weissblau media\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"caption\":\"weissblau media\"},\"sameAs\":[\"https:\\\/\\\/www.microconsult.de\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Efficient unit testing in C++ and C - MicroConsult Academy GmbH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microconsult.de\/en\/efficient-unit-testing-under-c-and-c\/","og_locale":"en_GB","og_type":"article","og_title":"Effizient zum Unit-Test unter C++ und C - MicroConsult Academy GmbH","og_description":"Praxiserprobte Wege, Embedded-Code zu isolieren und testen Autor: Franco Chiappori, Schindler Aufz\u00fcge AG Beitrag &#8211; Embedded Software Engineering Kongress 2016 Continuous Integration und automatisierte Tests sind erprobte Mittel, um die Qualit\u00e4t von Software zu f\u00f6rdern. Gerade den automatisierten Unit-Tests kommt gro\u00dfe Bedeutung zu, garantieren sie doch als Basis der Testpyramide auch die Basis der Qualit\u00e4t. [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/efficient-unit-testing-under-c-and-c\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2025-11-29T07:22:07+00:00","article_modified_time":"2026-02-13T06:36:53+00:00","author":"weissblau media","twitter_card":"summary_large_image","twitter_misc":{"Written by":"weissblau media","Estimated reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/effizient-zum-unit-test-unter-c-und-c\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/effizient-zum-unit-test-unter-c-und-c\/"},"author":{"name":"weissblau media","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"headline":"Effizient zum Unit-Test unter C++ und C","datePublished":"2025-11-29T07:22:07+00:00","dateModified":"2026-02-13T06:36:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/effizient-zum-unit-test-unter-c-und-c\/"},"wordCount":1477,"commentCount":0,"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/effizient-zum-unit-test-unter-c-und-c\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/effizient-zum-unit-test-unter-c-und-c\/","url":"https:\/\/www.microconsult.de\/effizient-zum-unit-test-unter-c-und-c\/","name":"Efficient unit testing in C++ and C - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"datePublished":"2025-11-29T07:22:07+00:00","dateModified":"2026-02-13T06:36:53+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/effizient-zum-unit-test-unter-c-und-c\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/effizient-zum-unit-test-unter-c-und-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/effizient-zum-unit-test-unter-c-und-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"Effizient zum Unit-Test unter C++ und C"}]},{"@type":"WebSite","@id":"https:\/\/www.microconsult.de\/#website","url":"https:\/\/www.microconsult.de\/","name":"MicroConsult Academy GmbH","description":"Professional training, consulting and project support","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microconsult.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a","name":"weissblau media","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","caption":"weissblau media"},"sameAs":["https:\/\/www.microconsult.de"]}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=7974"}],"version-history":[{"count":6,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7974\/revisions"}],"predecessor-version":[{"id":11691,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7974\/revisions\/11691"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=7974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=7974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=7974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}