Führen Sie Embedded-Programmierung mit testgetriebener Entwicklung mit googletest durch

Einführung

[Amazon.co.jp: Eingebettete Programmierung mit testgetriebenem entwicklungsagilem Design in C-Sprache und Objektorientierung](https://www.amazon.co.jp/%E3%83%86%E3%82%B9 % E3% 83% 88% E9% A7% 86% E5% 8B% 95% E9% 96% 8B% E7% 99% BA% E3% 81% AB% E3% 82% 88% E3% 82% 8B% E7 % B5% 84% E3% 81% BF% E8% BE% BC% E3% 81% BF% E3% 83% 97% E3% 83% AD% E3% 82% B0% E3% 83% A9% E3% 83 % 9F% E3% 83% B3% E3% 82% B0-% E2% 80% 95C% E8% A8% 80% E8% AA% 9E% E3% 81% A8% E3% 82% AA% E3% 83% 96% E3% 82% B8% E3% 82% A7% E3% 82% AF% E3% 83% 88% E6% 8C% 87% E5% 90% 91% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 82% A2% E3% 82% B8% E3% 83% A3% E3% 82% A4% E3% 83% AB% E3% 81% AA% E8% A8% AD% E8% A8% 88-James-W-Grenning / dp / 4873116147)

Dieser Artikel ist der erste in einer Reihe, die verhindern soll, dass Menschen, die mit den oben genannten Büchern lernen, beim Aufbau einer Umgebung stolpern.

Ich entwickle ein eingebettetes System und verwende hauptsächlich die Sprache C. Bevor ich auf dieses Buch stieß, habe ich es jedes Mal, wenn ich den Code geändert habe, übergreifend erstellt und die Binärdatei auf die Zielplatine kopiert, um sie zu überprüfen. Da die Menge an Hardware für die Teammitglieder nicht ausreicht, war es bei Verwendung der Hardware durch andere Mitglieder nicht möglich, den Betrieb zu überprüfen, und die Entwicklung wurde häufig verzögert.

Im Februar dieses Jahres stieß ich auf dieses Buch und begann zu üben, was in meiner Arbeit geschrieben stand. Infolgedessen hat sich mein Entwicklungsstil dramatisch verändert. Mit einer Build-Umgebung mit zwei Zielen kann die auf Unit-Tests basierende Entwicklung jetzt auf dem Host ohne Hardware durchgeführt werden, und automatisierte Unit-Tests erleichtern das Erkennen kleinerer Fehler. Ich bin gekommen, um ein bisschen Qualität in dem Code zu haben, den ich geschrieben habe.

Jetzt werden alle neuen Funktionen, die wir hinzufügen, in TDD entwickelt, und wir finden Zeit, Tests an vorhandenen Orten zu schreiben und das unermüdliche Refactoring fortzusetzen. Ich bin der Meinung, dass sich der Code zu einem besseren Design entwickelt hat, das mit jeder Änderung leichter zu lesen ist.

In diesem Buch werden Unity und CppUnit als Testframeworks vorgestellt. Ich dachte, dass es keinen Trick gibt, wie es ist, und es gab einen Stolperstein beim Studium dieses Buches. Deshalb habe ich mich dieses Mal entschlossen, den Quellcode zu veröffentlichen, mit dem ich dieses Buch sofort mit googletest studieren kann.

Autotools wird als Build-Tool verwendet. Daher kann der veröffentlichte Quellcode wie bei einem Cross-Compiler übergreifend erstellt werden. googletest funktioniert ohne Installation. Wenn Sie also die Cross-Built-Binärdatei auf der Zielplatine platzieren, wird der Komponententest auf der Zielplatine ausgeführt.

Worüber ich beim Lernen gestolpert bin

Während ich dieses Buch las, habe ich versucht, mit Unity und CppUnit zu kopieren, aber ich schämte mich zu sagen, dass ich über die Konstruktion der Umgebung gestolpert bin ... (Ich habe vergessen, warum ich gestolpert bin, aber ich glaube, ich habe aus irgendeinem Grund ungefähr einen Tag lang gekämpft) Außerdem war das Build-Skript mit dem veröffentlichten Beispielcode (für mich) kompliziert und ich konnte es nicht einfach selbst erweitern wollen. Es ist eine kleine Sache, aber wenn Sie auf etwas anderes stoßen als auf das, was Sie lernen möchten, verlieren Sie leicht Ihre Lernmotivation.

Ich habe versucht, eine Umgebung zu schaffen, in der selbst Leute, die gerade in die Embedded-Branche eingetreten sind, Dateien selbst hinzufügen und kopieren können.

Quellcode

Der Quellcode ist unten. https://github.com/tomoyuki-nakabayashi/TDDforEmbeddedC

Der Produktcode und der Testcode am Ende von Kapitel 4 werden veröffentlicht. Wenn Sie git, gcc und autotools installiert haben, können Sie den Test in weniger als einer Minute ausführen.

Wenn Sie dieses Buch von Anfang an kopieren möchten, löschen Sie bitte den Inhalt von src / LedDriver.c, src / LedDriver.h, test / LedDriverTest.cpp.

Quelldatei hinzufügen

Wenn Sie die Quelldatei selbst hinzufügen und verschiedene Dinge ausprobieren möchten, fügen Sie bitte den Dateinamen im entsprechenden Teil der folgenden Datei hinzu. TDDforEmbeddedC/test/Makefile.am

test_sources = \
  TestMain.cpp \
  LedDriverTest.cpp
target_sources = \
  $(top_srcdir)/src/LedDriver.c
gtest_SOURCES = $(test_sources) $(target_sources)

Teste doppelt und verspotte

Ab Kapitel 7 dieses Buches wird die Geschichte von Test Double und Mock veröffentlicht. Für den Rest des Inhalts haben wir eine Umgebung erstellt, in der Sie problemlos mit dem Kopieren beginnen können.

Kapitel 8, um eingebettete Programmierung durch testgetriebene Entwicklung mit googletest durchzuführen Eingebettete Programmierung durch testgetriebenen Development-Mock & Flash-Treiber- Eingebettete Programmierung durch testgetriebene Entwicklung mit Google Test-SOLID Design-

Nachtrag

Unterstützung für CMake hinzugefügt.

Recommended Posts

Führen Sie Embedded-Programmierung mit testgetriebener Entwicklung mit googletest durch
Führen Sie Embedded-Programmierung durch testgetriebene Entwicklung mit googletest ~ SOLID design ~ durch
Führen Sie Embedded-Programmierung mit testgetriebener Entwicklung mit googletest durch
Führen Sie Embedded-Programmierung durch testgetriebene Entwicklung mit googletest ~ SOLID design ~ durch
Was Sie mit Programmierkenntnissen machen können
Was Sie mit Programmierkenntnissen machen können
Entwicklungsverdauung mit Django
Asynchrone Programmierung mit libev # 2
3. 3. KI-Programmierung mit Python
Python-Programmierung mit Atom
Wettbewerbsfähige Programmierung mit Python
Shader-Programmierung mit pyOpenGL
Mach Houdini mit Python3! !! !!
Asynchrone Programmierung mit libev
Lineare Programmierung mit PuLP
Programmieren mit Python Flask
Asynchrone Programmierung mit libev # 3