🧪 1. Automatisierte Qualitätssicherung mit GoogleTest
Modernes Systems Engineering verlangt automatisierte Regressionstests bei jedem Build. GoogleTest (gtest) ist das weltweit dominierende C++ Testframework. Es registriert Tests automatisch über Makros (TEST), formatiert Ausgaben farbig und unterscheidet präzise zwischen weichen Überprüfungen (EXPECT) und harten Vorbedingungen (ASSERT).
EXPECT_EQ: Prüft die Lackfarbe des Autos. Weicht sie ab, notiert der Prüfer einen Mangel, prüft das Auto aber weiter auf Bremsen und Motor. ASSERT_NE: Prüft, ob überhaupt vier Räder montiert sind. Fehlt ein Rad, bricht der Prüfer sofort ab, da eine Weiterfahrt zum Crash führen würde.
⚡ 2. C / C++ Quick-Cheat-Sheet
| Syntax / Anweisung | Bedeutung & Funktion |
|---|---|
TEST(Suite, Name) { ... } | Definiert einen isolierten Unittest-Fall. |
EXPECT_EQ(val1, val2); | Prüft Gleichheit; Test läuft bei Fehler weiter. |
ASSERT_TRUE(condition); | Fatale Prüfung; bricht Testfunktion bei False sofort ab. |
EXPECT_THROW(expr, ExceptionType); | Verifiziert, dass Code eine erwartete Exception wirft. |
⚠️ 3. Häufige Stolperfallen & Anti-Patterns
Da ASSERT_* im Fehlerfall ein einfaches return; ohne Wert ausführt, führt sein Einsatz in Funktionen mit Rückgabetyp (z.B. int) zu einem Compilerfehler!
Schreibe nicht ASSERT_TRUE(a == b), sondern ASSERT_EQ(a, b)! Bei einem Fehler gibt ASSERT_EQ die tatsächlichen Werte von a und b aus, während ASSERT_TRUE nur nutzloses 'Value of: a == b, Actual: false' liefert.
🧠 Diagnostischer Selbst-Check
Überprüfe dein Verständnis zu Speichersicherheit, Syntax und Systems-Design mit gezieltem Feedback: