Я читал о TDD, и я попробовал его в своем новом проекте.Как правильно управлять тестированием?
Я понимаю, что в TDD это как тестирование Blackbox, то есть это имеет значение , что, а не как .so, я пришел к выводу и перестал испытывать частные методы после прочтения об этом на многих постах, как это неверный путь.
Однако я не смог это сделать по этим причинам.
Я покажу вам пример: У меня есть программа, которая читает текстовый абзац, поэтому я написал что-то подобное в своем методе тестирования (для tdd step1).
/*
My program reads a textual paragraph from file and saves it to my custom paragraph object;
*/
Итак, соответственно, я сделал этот метод, чтобы создать RED случай.
public void paragraphMustNotBeNullTest(){
File f = new File("some path")
ParagraphReader reader= new ParagraphReader();
reader.read();
assertNotNull("my custom paragraph is null",reader.getCustomParagraph());
}
Я написал следующий код:
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
}
}
Теперь проблема, я заранее знаю, что я буду использовать countingwords и createCustomParagraph как частные методы.
Таким образом, в том, что случаях я должен идти с:
создания их общественности и следовать TDD цикл.
сделать их частными.
удалить тесты для них (поскольку методы теперь являются частными и недоступными для тестов). Я думаю, что это довольно громоздкий и неправильный способ сделать tdd.
Я смущен о this.Everyone говорит код записи только после того, как вы пишете провальный тест, но вот если я знаю, что я собираюсь написать частный метод то как мне это сделать?
Прошу вас исправить меня, если я где-то ошибаюсь. Кроме того, если возможно дать некоторый реальный пример ...
Кроме того, я боюсь, что большую часть времени я буду тесты для редактирования или удаления их из-за проблем спецификаторов доступа или рефакторинга ...
Примечание: есть нет a дубликат вопрос. У меня нет хорошего ответа для ситуаций в реальном времени. Во всех примерах, которые я видел, они показывают только один класс с спецификаторами по умолчанию или с открытым доступом, поэтому они действительно не показывают, как именно работать в реальном времени.
Ваши личные методы (прямо или косвенно) вызываются некоторыми публичными методами. Вы проверяете публичные методы. Эрго, вы проверяете частные методы (косвенно). Что именно смущает вас? – Turing85
Итак, вы имеете в виду reader.read(); вызова метода достаточно? т.е. я буду писать частные методы, я не буду проходить красный зеленый желтый цикл для этих новых частных методов (я предполагаю, что в тот момент, когда он должен быть закрытым), я создаю? – swapyonubuntu
Если вы вводите новый (и, скорее всего, багги) частный метод (который используется общедоступным методом), напишите тест, который терпит неудачу (и делает это, потому что частный метод работает неправильно). – Turing85