Как тестировать строки? jUnit
Всем привет, столкнулся с данной проблемой: не могу нормально запустить тест на JUnit когда нужно проверить несколько строк. Когда проверяю однострочный текст - нормально, когда многострочный - ругается.
Класс: Part1
final static String dir = "part1.txt";
static String readText(){
StringBuilder text = new StringBuilder();
try(FileReader fileReader = new FileReader(dir)){
int c;
while ((c = fileReader.read())!=-1){
text.append((char)c);
}
}catch (IOException ex){
ex.getMessage();
}
return text.toString();
}
Класс: Part1Test
String string = "Some\ntext";
@Test
public void testReadText() {
assertEquals(string, Part1.readText());
}
Файл: part1.txt
Some
text
Ошибка:
com.epam.rd.java.basic.practice3.Part1Test > testReadText FAILED
org.junit.ComparisonFailure: expected:<Some[]
text> but was:<Some[
]
text>
at org.junit.Assert.assertEquals(Assert.java:115)
at org.junit.Assert.assertEquals(Assert.java:144)
at com.epam.rd.java.basic.practice3.Part1Test.testReadText(Part1Test.java:12)
Ответы (2 шт):
Автор решения: Ruslan
→ Ссылка
Оставлю ответ для потомков)) Оказалось, что при чтении из файла(насколько я понял) ставиться \r перед \n. Вот как это выглядит
Автор решения: Sergey Zh.
→ Ссылка
Если проблема в разделителе строк (а они бывают разные: \r, \n, \r\n), то используя JUnit и Assertj можно сравнивать строки без учёта этого разделителя.
import static org.assertj.core.api.Assertions.assertThat;
...
assertThat(resultString).isEqualToIgnoringWhitespace(expectedString);
