Ich habe über TDD gelesen und ich habe es an meinem neuen Projekt versucht.Wie man Test Driven Development richtig macht?
Ich verstehe, dass in TDD es wie Black-Box-Test ist, dh es zählt WHAT statt wie .So, ich abgeschlossen und beendet die Prüfung private Methoden nach an vielen Stellen darüber zu lesen, wie Es ist nicht richtig.
Allerdings habe ich es aus diesen Gründen nicht geschafft.
Ich werde Ihnen durch ein Beispiel zeigen: Ich habe ein Programm, das einen Textabsatz liest, also schrieb ich etwas in meiner Testmethode (für tdd step1).
/*
My program reads a textual paragraph from file and saves it to my custom paragraph object;
*/
So dementsprechend habe ich diese Methode, um den RED Fall zu erstellen.
public void paragraphMustNotBeNullTest(){
File f = new File("some path")
ParagraphReader reader= new ParagraphReader();
reader.read();
assertNotNull("my custom paragraph is null",reader.getCustomParagraph());
}
Ich habe folgenden Code geschrieben:
package com.olabs.reader;
import java.io.FileInputStream;
import java.io.InputStream;
import com.olabs.models.OlabsParagraph;
public class Para {
private String paragraphText = null;
private Paragraph oParagraph = null;
public Paragraph getCustomParagraph() {
return oParagraph;
}
public void setoParagraph(Paragraph oParagraph) {
this.oParagraph = oParagraph;
}
public void read() {
InputStream is = new FileInputStream("abc......");
// ..
String text = is.read(); // assume I got text read from file.
this.paragraphText = text;
}
private void createCustomParagraph()
{
Paragraph p = new Paragraph();
p.setText(paragraphText);
p.setId(1);
p.setType("Story");
...........
}
private void countWords()
{
// counting words in paragraph logic
}
}
Nun das Problem ist, ich weiß vorher, dass ich countingwords und createCustomParagraph als private Methoden verwenden.
So, dass Fälle sollte ich gehen mit:
sie als öffentliche Schaffung und TDD-Zyklus folgen.
machen sie privat.
löschen Sie die Tests für sie (da die Methoden jetzt privat und für Tests nicht zugänglich sind). Ich denke, das ist ziemlich umständlich und falsche Art, tdd zu tun.
Ich bin verwirrt über this.Everyone sagt Code schreiben, erst nachdem Sie einen fehlerhaften Test schreiben, aber hier, wenn ich weiß, ich werde eine private Methode schreiben dann wie soll ich das tun?
Ich bitte Sie, mich zu korrigieren, wenn ich irgendwo falsch liege. Auch wenn möglich, etwas reales Beispiel geben ...
auch, fürchte ich, dass die meisten der Zeit, die ich Bearbeitung Tests sein wird oder sie aufgrund Zugriffsbezeichner Probleme oder Refactoring Entfernen ...
Hinweis: Diese ist nicht eine doppelte Frage. Ich habe keine gute Antwort für Echtzeit-Situationen. In allen Beispielen, die ich gesehen habe, zeigen sie nur eine einzige Klasse mit Standard-oder Public-Access-Spezifizierer, so zeigen sie wirklich nicht, wie genau in Echtzeit-Projekt arbeiten.
Ihre privaten Methoden werden (direkt oder indirekt) von einigen öffentlichen Methoden aufgerufen. Sie testen die öffentlichen Methoden. Ergo, Sie testen die privaten Methoden (indirekt). Was genau verwirrt dich? – Turing85
Also meinst du reader.read(); Methodenaufruf ist genug? dh ich werde weiterhin private Methoden schreiben, ich werde nicht durch rot grün gelb Zyklus für diese neuen privaten Methoden gehen (ich nehme an, in diesem Moment, dass es privat sein sollte) ich erstelle? – swapyonubuntu
Wenn Sie eine neue (und höchstwahrscheinlich fehlerhafte) private Methode (die von einer öffentlichen Methode verwendet wird) einführen, schreiben Sie einen Test, der fehlschlägt (und dies, weil die private Methode nicht ordnungsgemäß funktioniert). – Turing85