Если ваш класс, который рисует елку, выглядит примерно так:
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 по умолчанию).