Ho letto di TDD e l'ho provato sul mio nuovo progetto.Come fare a Test Driven Development in modo corretto?
Capisco che in TDD è come test blackbox, vale a dire che conta quello piuttosto che come .Quindi, ho concluso e si fermò metodi di prova privati dopo aver letto su molti post come non è il modo corretto.
Tuttavia, non sono riuscito a farlo a causa di questi motivi.
Vi mostrerò l'esempio: Ho un programma che legge un paragrafo di testo, quindi ho scritto qualcosa di simile nel mio metodo di test (per tdd step1).
/*
My program reads a textual paragraph from file and saves it to my custom paragraph object;
*/
Quindi di conseguenza ho fatto questo metodo per creare il RED caso .
public void paragraphMustNotBeNullTest(){
File f = new File("some path")
ParagraphReader reader= new ParagraphReader();
reader.read();
assertNotNull("my custom paragraph is null",reader.getCustomParagraph());
}
ho scritto seguente codice:
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
}
}
Ora il problema è che io so in anticipo che userò countingwords e createCustomParagraph come metodi privati.
Così, in questo caso devo andare con:
crearli come pubblico e seguire il ciclo TDD.
renderli privati.
eliminare i test per loro (poiché i metodi sono ora privati e inaccessibili per i test). Penso che questo sia un modo piuttosto ingombrante e scorretto per fare tdd.
Sono confuso su this.Everyone dice scrivere il codice solo dopo che si scrive un test in mancanza, ma qui se so che sto per scrivere un metodo privatoallora come farò a fare questo?
Vi chiedo di correggermi se sbaglio da qualche parte. Anche se possibile, dare qualche esempio reale ...
Inoltre, temo che la maggior parte del tempo mi sarà test di editing o la rimozione a causa di problemi di accesso prescrittori o refactoring ...
Nota: Questa è non una domanda doppia. Non ho una buona risposta per le situazioni in tempo reale. In tutti gli esempi che ho visto, mostrano solo una singola classe con specificatori di accesso pubblico o predefiniti, quindi in realtà non mostrano esattamente come lavorare nel progetto in tempo reale.
I metodi privati sono (direttamente o indirettamente) richiamati da alcuni metodi pubblici. Metti alla prova i metodi pubblici. Ergo, tu testi i metodi privati (indirettamente). Cosa ti confonde esattamente? – Turing85
Quindi intendi reader.read(); la chiamata al metodo è sufficiente? cioè continuerò a scrivere metodi privati, non passerò attraverso il ciclo rosso verde giallo per questi nuovi metodi privati (presumo in quell'istante che dovrebbe essere privato) che creo? – swapyonubuntu
Se si introduce un nuovo metodo privato (e molto probabilmente buggato) (utilizzato da un metodo pubblico), scrivere un test non riuscito (e lo fa perché il metodo privato non funziona correttamente). – Turing85