Unit Tests mit GoogleTest und GoogleMock
GoogleTest ist ein modernes Unit-Test Framework für C++. Es hat sich aufgrund seines Funktionsumfangs, seiner Robustheit und seiner Flexibilität zu einem Quasi-Industriestandard entwickelt. Es ist problemlos in industriellen Projekten einsetzbar und unterstützt die plattformübergreifende Entwicklung. Die Struktur des Frameworks ähnelt der Struktur älterer Unit-Test-Frameworks und macht damit früher erworbenes Wissen anwendbar. Auch die Integrierbarkeit in Continuous-Integration-Lösungen ist für viele Umgebungen bereits gegeben und lässt sich für andere Umgebungen sehr einfach realisieren.
Seine volle Stärke entfaltet GoogleTest im Zusammenspiel mit GoogleMock. GoogleMock ist ein herausragendes Framework, um Abhängigkeiten zu simulieren. Gerade in der Embedded-Entwicklung ist eine solche Simulation besonders wichtig, um die Logik vom Verhalten des Zielsystems zu isolieren. GoogleMock folgt einer eigenen, wirklich herausragenden Logik und geht weit über die Fähigkeiten traditioneller Unit-Test Frameworks hinaus.
Die folgenden Themen werden durchgenommen:
Die Voraussetzungen für GoogleTest
- Ein C++-Compiler mit Unterstützung für C++14 oder C++17
- Mindestens 500KB RAM auf dem Testsystem (mehr empfohlen)
- Die Standardausgabe:
stdout - Die pthread Bibliothek
Grundlagen
- Abgrenzung von Unit-Tests zu Integrationstest
- Wartbarkeit von Tests
- Tests als Dokumentation des Codes
Einführung in GoogleTest
- Die Funktionsweise des Frameworks
- Das „Triple A“ Konzept (Arrange, Act, Assertion)
- Namenskonventionen von Testprojekten, Suiten, Methoden und Variablen
- Assertions
- Exceptions
- Tests von Fließkommazahlen
- Tests von Exceptions
- Death-Tests
- Test-Fixtures
- Parametrisierte Tests
- Template parametrisierte Tests
- Der Test von Statusmaschinen
Die Einbindung von GoogleTest in ein Softwareprojekt
- Struktur des Frameworks
- Compilieren des Frameworks
- Erstellen einer Library aus dem Framework
- Der Testreport
- Der Testreport als XML, json oder HTML
- Die Programmierung des Testreports
- Ideen und Praxis der automatischen Testausführung
GoogleMock
- Einführung in die Begriffe (Stub, Mock, Fake und Spy)
- Das Konzept „Arrange, Expect, Act“
- Architektonische Voraussetzungen (z.B. Dependency Injection)
- Erstellen von Mocks
- Mockarten (Nicemock, Strictmock etc.)
- Matcher
- Mocking überladener Methoden
- Mocking von Klassentemplates
- Mocking nicht-virtueller Methoden
- Mocking virtueller Methoden
- Mocking freier Funktionen
- Faking von Legacy-Code und Fremdbibliotheken
- Verstehen von Uninteresting und Unexpected Calls
- Ordered Calls
- Mocking von Seiteneffekten
- Die Verwendung von Funktionen, Methoden, Funktoren und Lambdas als Actions
Das Framework wird anhand von praktischen Beispielen erlernt. Dazu ist ein C++ Compiler nötig. Der Compiler sollte nicht zu alt sein und die wesentlichen Sprachmerkmale von ANSI/ISO C++ bezüglich Namespaces und Namenskonventionen unterstützen. Wichtig ist natürlich der Einsatz einer Plattform, die den Teilnehmern gut bekannt ist - vorzugsweise Windows, MacOSX oder Linux. Natürlich kann auch jedes beliebige UNIX-System als Entwicklungs- und Übungsplattform für die Schulung eingesetzt werden.
GoogleTest und GoogleMock sind Marken von Google LLC. Dieses Seminar ist ein unabhängiges Angebot und steht in keiner Verbindung zu Google LLC bzw. wird nicht von Google unterstützt.
Zuletzt geändert am 02.01.2026