C-Programmierung und TDD

Lesezeit: 3 Minuten

Ist Test Driven Development auf OO beschränkt? Oder ist es möglich/nützlich, es in Verbindung mit einer prozeduralen Sprache zu verwenden? Ich muss in den nächsten Wochen ein größeres Projekt in C starten und denke darüber nach, wie ich es entwickeln kann.

  • Sie haben bereits stackoverflow.com/questions/2343420/… gefragt, also wissen Sie sehr gut, dass Sie es sind kann Unit-Test Straight Procedure Code. Was diese Frage überflüssig macht. Siehe auch stackoverflow.com/search?q=[c]+einheit+test .

    – dmckee — Ex-Moderator-Kätzchen

    4. April 2010 um 20:01 Uhr

Benutzer-Avatar
Oded

TDD ist ein Entwurf Paradigma und ist als solches nicht an ein bestimmtes Programmierparadigma gebunden.

Einfach ausgedrückt, Sie schreiben einen Test für Ihren Code, bevor Sie Ihren Code schreiben.

Sehen Dies Slide-Deck über TDD mit C (das Bowling-Spiel Kata).

  • 3 Antwortzeilen, von denen die letzte auf 122 Präsentationsfolien verweist. Ich mag es.

    – Błażej Michalik

    14. April 2016 um 19:23 Uhr

Test Driven Development bedeutet einfach, dass Sie Code zuerst beginnend mit dem Testmuster entwickeln und dann die Funktionalität ausbauen, bis er den Test besteht. Dies gilt gleichermaßen für jedes Programmierparadigma: strukturiert/prozedural, objektorientiert, funktional – alles, was Eingaben und Ausgaben annehmen kann, kann getestet werden.

Schauen Sie sich das Buch Test Driven Development for Embedded C von James Grenning an. Darin liefert er aussagekräftige Beispiele für die Verwendung von zwei TDD-Frameworks (Einheit und CppUTest) um C zu testen.

Buchcover "Testgetriebene Entwicklung für Embedded C".

  • Ist dieses Buch für Nicht-Embedded-Programmierer noch nützlich?

    – MrPickles

    16. Januar 2016 um 21:48 Uhr

Ich glaube nicht, dass TDD überhaupt auf OO beschränkt ist.

Probieren Sie die Frameworks Unity & CMock aus.

ein beispiel aus ihrem wiki:

void test_ShowSomeSillyExamples(void)
  {
    TEST_ASSERT_NOT_EQUAL(0, -1);
    TEST_ASSERT_EQUAL_INT(1, 1);
    TEST_ASSERT_EQUAL_HEX16(0x1234, 0x1234);
    TEST_ASSERT_EQUAL_STRING("These Are The Same", "These Are The Same");
    TEST_ASSERT_BITS(0x1111, 0x5555, 0x7175);
    TEST_ASSERT_INT_WITHIN(5, 100, 102);
  }

sehen: http://sourceforge.net/apps/trac/embunity/wiki

Ein Buch:

http://www.pragprog.com/titles/jgade/test-driven-development-for-embedded-c

Eine Yahoo-Gruppe zu diesem Zeug:

http://tech.groups.yahoo.com/group/AgileEmbedded/

Wenn Sie TDD in C machen würden, müssten Sie dann Ihre Tests in C schreiben? Ich würde wahrscheinlich den Produktionscode in C schreiben und die Tests in C++ mit Googles gtest.

Wie andere angemerkt haben, ist TDD an sich nicht an OOP gebunden. In der Praxis ist es jedoch an Modularität gebunden. Jeder Komponententest sollte nur einen sehr begrenzten Teil des Programms testen. Wenn Sie also viele globale Zustände haben, ist es fast unmöglich, das Programm zu testen.

Es ist definitiv möglich, modulare Programme in C zu schreiben, aber es erfordert andere Techniken. TDD könnte Sie zwingen, ein modulares Programm zu schreiben, aber es könnte auch Ihre Entwicklung zum Erliegen bringen, wenn Sie es nicht gewohnt sind, modulare C-Programme zu schreiben.

Benutzer-Avatar
Eli Bendersky

TDD ist von Wikipedia definiert folgendermaßen:

Testgetriebene Entwicklung (TDD) ist eine Softwareentwicklungstechnik, die auf der Wiederholung eines sehr kurzen Entwicklungszyklus beruht: Zuerst schreibt der Entwickler einen fehlerhaften automatisierten Testfall, der eine gewünschte Verbesserung oder neue Funktion definiert, dann produziert er Code, um diesen Test zu bestehen und schließlich den neuen Code auf akzeptable Standards umgestaltet.

Hier gibt es absolut nichts, was es spezifisch für OOP macht. Im Gegenteil, TDD eignet sich durchaus für alle Arten von Programmierung. Insbesondere ist es durchaus möglich, es in Verbindung mit einer prozeduralen Sprache, einschließlich C, zu verwenden.

Benutzer-Avatar
Oleg

Es gibt Unit-Test-Frameworks für c. Wenn Sie nach “c unit test” googeln, werden einige angezeigt. Ich habe mehrere Projekte in C mit TDD geschrieben und definitiv ist TDD nicht nur für OO-Sprachen. Auch wenn es schwieriger ist, TDD in C zu machen.

1383620cookie-checkC-Programmierung und TDD

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy