Kapitel 14
Alle Codedateien dieses Kapitels herunterladen
14_4_1_TestDrivenTestDriver.cpp
/*
* Lösung für Übung 14.4.1 - Test-Driven Test Driver
*
* Bevor Sie die Methode startRide() so wie unten angegeben
* implementiert haben, sollten Sie zuerst diese Variante benutzt haben:
* bool startRide(int gForces)
* {
* return true;
* }
* um zu sehen, dass der Test diesen Programmierfehler auch findet.
*/
#include <iostream>
class TestDriver
{
public:
TestDriver(int sensitivity)
: sensitivity(sensitivity)
{
}
bool startRide(int gForces)
{
// return true; // <- Testen Sie Ihren Test zuerst mit diesem Dummyresultat!
sickness += sensitivity * gForces;
if (sickness > 100)
{
std::cout << "... w\201rg" << std::endl;
return false;
}
std::cout << "Testfahrt begonnen" << std::endl;
return true;
}
private:
int sickness = 0;
int sensitivity = 0;
};
void unitTests()
{
TestDriver driver0(0);
TestDriver driver5(5);
TestDriver driver100(100);
// Der unzerstörbare Testfahrer - ihm wird niemals schlecht
for (int i = 0; i < 100; i++)
{
bool rideStarted = driver0.startRide(i);
if (!rideStarted)
{
throw std::exception("Fahrt nicht gestartet");
}
}
// Ein etwas empfindlicher Tester
for (int i = 0; i < 5; i++)
{
bool rideStarted = driver5.startRide(4);
if (!rideStarted)
{
throw std::exception("Fahrt nicht gestartet");
}
}
for (int i = 0; i < 2; i++)
{
bool rideStarted = driver5.startRide(1);
if (rideStarted)
{
throw std::exception("Fahrt unerlaubterweise gestartet");
}
}
// Dieser Tester sollte vielleicht einen anderen Beruf wählen
bool rideStarted = driver100.startRide(0);
if (!rideStarted)
{
throw std::exception("Fahrt nicht gestartet");
}
rideStarted = driver100.startRide(2);
if (rideStarted)
{
throw std::exception("Fahrt unerlaubterweise gestartet");
}
}
int main()
{
unitTests();
return 0;
}
14_4_2_UserStories.cpp
/*
* Lösung für Übung 14.4.2 - Verzähl mir nix von User Stories!
*
* Diese Lösung hat keinen Code. Stattdessen hier ein paar Beispiele für
* User Stories, die für eine Lagerverwaltung eines Supermarktes aufgestellt werden könnten.
* Natürlich sind noch viele mehr denkbar. Die Hauptsache ist, dass Sie grob nach dem selben
* Format vorgegangen sind.
*
* 1. Als Lagermitarbeiter möchte ich Waren in den Bestand aufnehmen können, um neue Lieferungen erfassen zu können
* 2. Als Lagermitarbeiter möchte ich Waren aus dem Bestand austragen können, um verkaufte Einheiten korrekt zu entfernen.
* 3. Als leitender Angestellter möchte ich eine Übersicht über den aktuellen Bestand abfragen, um mir einen Überblick zu verschaffen.
* 4. Als leitender Angestellter möchte ich neue Artikel mit ihren Stammdaten einpflegen können, um neue Produkte zu übernehmen.
* 5. Als leitender Angestellter möchte ich Fehleingaben meiner Mitarbeiter korrigieren können, um Fehler beheben zu können.
* 6. Als Betriebsprüfer oder Chef möchte ich ein Protokoll aller Warenbewegungen sowie Fehlerkorrekturen einsehen können, um Betrug zu erkennen.
*/
int main()
{
return 0;
}
14_4_3_Spaziergang.cpp
/*
* Lösung für Übung 14.4.3 - Spaziergang
*/
#include <iostream>
#include <string>
class Programmer
{
public:
void walk(const std::string& where)
{
std::cout << "Ich laufe im " << where << std::endl;
}
};
int main()
{
Programmer hackerman;
// ... ernsthaft??
hackerman.walk("Park");
return 0;
}