Liebe Test-getriebene Entwickler, nach einem zugegebenermaßen sehr rudimentären Einlesen in die vorgehensweise des TDD stellt sich mir eine Frage, die ich anhand einer einfachen statischen add(int, int) Methode erläutern will. Angenommen ich plane diese Methode, welche zwei ints addieren soll zu implementieren, dafür würde ich mir sukzessive Tests für interessante Fälle aufbauen:
Eine (angenommen ebenso sukzessiv entstandene) Methode die diese Tests erfüllen kann wäre zum Beispiel
Da dies wohl wenig zielführend ist, will ich in der Implementierung der Methode gerne abstrahieren. Nach meinem Verständnis des TDD-Prinzips müsste ich mir vorher aber einen entsprechenden Test formulieren:
Hier tut sich nun meine Frage auf, wie schaffe ich es einen solchen allgemeinen Test zu beschreiben und vor allem, wie schaffe ich es dies zu tun ohne im Test schon die Implementierung der zu testenden Methode vorweg zu nehmen (was ich in diesem Bspl. Ja durch das x+y tue)?
Ich weiß, das Beispiel ist nicht besonders glücklich gewählt, aber ich hoffe, es hilft mein Problem zu verdeutlichen.
ETA: Um es noch ein wenig anders zu formulieren: Die Frage ist, ist es möglich bzw. besser überhaupt vorgesehen von der Formulierung explizieter Beispieltestfälle auf eine allgemeine Testdefinition zu wechseln. Oder muss ich es schaffen, passende explizite Fälle (dann wohl meist Grenzfälle) zu beschreiben?
Java:
@Test
public void testAddZeroZero()
{
assertEquals(Adder.add(0,0),0);
}
@Test
public void testAddZeroOne()
{
assertEquals(Adder.add(0,1),1);
}
@Test
public void testAddOneTwo()
{
assertEquals(Adder.add(1,2),3);
}
Java:
public static int add(int x, int y)
{
if(x == 1 && y == 2) return 3;
else if(y == 1) return 1;
else return 0;
}
Java:
@Test
public void testAdd()
{
int x = n; //n sollte allgemein sein
int y = m; //m sollte allgemein sein
assertEquals(Adder.add(x,y), x+y)
}
Ich weiß, das Beispiel ist nicht besonders glücklich gewählt, aber ich hoffe, es hilft mein Problem zu verdeutlichen.
ETA: Um es noch ein wenig anders zu formulieren: Die Frage ist, ist es möglich bzw. besser überhaupt vorgesehen von der Formulierung explizieter Beispieltestfälle auf eine allgemeine Testdefinition zu wechseln. Oder muss ich es schaffen, passende explizite Fälle (dann wohl meist Grenzfälle) zu beschreiben?
Zuletzt bearbeitet: