У меня есть проект maven, который рисует елку. Мне нужно реализовать на нем модульные тесты, но я понятия не имею, как это сделать:/
Я уже настроил JUnit в своем проекте Maven.
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 10 - i; j++)
System.out.print(" ");
for (int k = 0; k < (2 * i + 1); k++)
System.out.print("*");
System.out.println();
}
Я знаю, но я все еще студент. Перерыл кучу файлов про TDD, но так и не знаю, как применить тестирование на этих простых алгоритмах.
На высоком уровне: целью этого кода является печать дерева или треугольника из звездочек. Тест прост, запустите код и убедитесь, что он генерирует желаемый результат.
Поскольку код печатается в System.out, вам нужно будет перенаправить System.out в файл или строку (см. это), а затем сравнить сгенерированный вывод с желаемым выводом, чтобы убедиться, что код работает правильно.
Прежде всего спасибо за идею. Теперь я попытаюсь получить вывод этого дерева и попытаться проверить в своем тестовом методе, чтобы увидеть, соответствует ли оно тому, что я хочу, или нет.
Предполагая, что ваш класс, который рисует рождественскую елку, выглядит примерно так:
class ChristmasTreeDrafter {
void draw() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 10 - i; j++)
System.out.print(" ");
for (int k = 0; k < (2 * i + 1); k++)
System.out.print("*");
System.out.println();
}
}
}
Вы можете проверить это таким образом:
public class ChristmasTreeDrafterTest {
private final ByteArrayOutputStream out = new ByteArrayOutputStream();
@Before
public void setup() {
System.setOut(new PrintStream(out));
}
@Test
public void shouldDrawChristmasTree() {
// given
ChristmasTreeDrafter christmasTreeDrafter = new ChristmasTreeDrafter();
// when
christmasTreeDrafter.draw();
// then
Assert.assertEquals(" *\r\n" +
" ***\r\n" +
" *****\r\n" +
" *******\r\n", out.toString());
}
}
В методе setup
стандартный поток вывода перенаправляется на объект out
и благодаря этому вы можете проверить его содержимое в блоке then
. К сожалению, в Java нет многострочных строк, поэтому этот код выглядит некрасиво. Чтобы улучшить читаемость, вы можете извлечь этот контент в файл под test/resources
(при условии структуры проекта maven по умолчанию).
Это действительно то, что я ищу. Спасибо . Я попытаюсь реализовать это в своем коде и посмотрю, как это происходит.
Замечательно! Если это соответствует вашим ожиданиям, рассмотрите возможность принятия моего ответа.
Это сработало ! Спасибо большое. Это мой первый раз, когда я пытаюсь сделать тесты, и этот алгоритм немного отличается. Мне не удалось понять, как я могу его протестировать, и я все еще изучаю Java, я не мог подумать, что могу использовать буфер.
Это не сайт "закодируй это для меня". Вам необходимо предоставить минимальный воспроизводимый пример для конкретной проблемы на будущее.