Как я могу применить модульное тестирование на моем простом алгоритме? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть проект 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();
  }

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Если ваш класс, который рисует елку, выглядит примерно так:

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 по умолчанию).

0 голосов
/ 27 мая 2019

На высоком уровне: целью этого кода является печать дерева или треугольника из звездочек. Тест прост, запустите код и посмотрите, как он генерирует желаемый результат.

Поскольку код печатается в System.out, вам нужно будет перенаправить System.out в файл или строку (см. this ), а затем сравнить сгенерированный вывод с желаемым выводом, чтобы увидеть код работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...