Junit возвращает ошибку при сравнении строк assertTrue

#java #junit

#java #junit

Вопрос:

      StringWriter result = runMethod.getOutput();
   String expected = "<3>textValue</3>"
    assertTrue("Should have contained the required result", result.toString().contains(expected));
  

Почему Junit возвращает ошибку здесь?

Комментарии:

1. Что делает System.out.println(результат. toString()) дает вам?

2. В нем содержится большой блок текста и ожидаемая строка.

3. Когда я распечатываю System.out.println (результат. toString().содержит) выводит значение «true»

4. В чем ошибка? Или он просто выводит «Должен был содержать …»?

5. Я не вижу никаких причин, по которым утверждение завершается ошибкой, если result содержит искомую строку. Однако отсутствие точки с запятой заставляет меня думать, что это не тот код, который вы используете. Есть ли у вас что-нибудь еще в этом тестовом примере, что можно изменить result или что-то в этом роде?

Ответ №1:

Я только что попробовал это, и это работает нормально.

Это выдает следующую ошибку, если строка не совпадает. java.lang.Ошибка утверждения: должна была содержать требуемый результат

 import static org.junit.Assert.assertTrue;

import java.io.StringWriter;

import org.junit.Test;

public class XYZ
{

    @Test
    public void test()
    {

        StringWriter result = new StringWriter();
        result.append("<3>textValue</3>");
        String expected = "<3>textValue</3>";
        assertTrue("Should have contained the required result", result.toString().contains(expected));
    }

}