Добавление метода для прохождения модульного теста - PullRequest
0 голосов
/ 07 января 2020

У меня есть этот модульный тест:

      private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();

      @Test
      public void testLog_C_Indent_String() {
        String message = "hallo";
        IMyLog instance = getInstance();

        instance.setLogFile(null);
        instance.setLogConsole(true);
        instance.setIndent(3);
        instance.log(message);

        String expectedPrefix = "\t\t\t";
        String expectedText = expectedPrefix + message;
        String result = outContent.toString();

        assertTrue("The output is expected to be offset by 3 tabs.",
            result.startsWith(expectedPrefix)
                ||
                result.contains(expectedText));
      }

Мне нужно добавить метод, который выдаст сообщение "hallo" с \ t \ t \ t, результатом будет "\ t \ t \ thallo" «. Я сделал этот метод, но каждый раз, когда я получаю сообщение:« Ожидается, что вывод будет смещен на 3 вкладки. »

      private boolean logConsole = true;
      private String logFile;
      private int indent = 0;

      public void log(String message) {
            try {
                if (this.logConsole) {
                    System.out.println(message);
                }
                if (logFile.isEmpty()) {
                    System.out.println("file is empty");
                } else {
                    PrintWriter writer = new PrintWriter(logFile, "UTF-8");

                    for (int i = 0; i < indent; i++) {
                        writer.println("\t");
                    }
                    writer.println();
                    writer.println(message);
                    writer.close();
                }
            } catch (FileNotFoundException | UnsupportedEncodingException | NullPointerException e) {
                e.printStackTrace();
            }
        }

Можете ли вы помочь мне?

1 Ответ

0 голосов
/ 07 января 2020

Знаете ли вы, что println() добавляет новую строку? Так что на самом деле ваша строка выглядит так:

"\t\n\t\n\t\n\nhallo\n"

Попробуйте:

for (int i = 0; i < indent; i++) {
                        writer.print("\t");
                    }

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