Я пытаюсь проверить вывод консоли путем перенаправления стандартного вывода на объект ByteArrayOutputStream. Я нашел этот маленький код, который позволяет мне делать именно это. Однако использование таких символов, как «-», «+» и т. Д., Не дает результатов. Мне было интересно, почему:проверка равенства строки, содержащей символы, такие как «-», «+», «/» не работает
Вот JUnit Test:
import static org.junit.Assert.*;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
//This test is try and test output against the console output,
//but the inclusion of characters '-', '*', '+', and '/' makes
//it especially hard to implement correctly. So abandoning
public class ApplicationTest {
private final ByteArrayOutputStream outContent=new ByteArrayOutputStream();
@Before
public void setUpStreams(){
System.setOut(new PrintStream(outContent));
}
@After
public void cleanUpStream(){
System.setOut(null);
}
@Test
public void test_Test1() {
//Lexer lex=new Lexer("a+b*c");
//System.out.print("a b c * + ");
System.out.format("%s ", "a");
System.out.format("%s ", "- ");
String str="a - ";
//Test Fails.
assertEquals(outContent.toString(),str);
}
}
Если вам нужна наша помощь, тогда опубликуйте очень объяснительное сообщение об ошибке, которое дает вам JUnit. – chrylis
Просто примечание: вызов System.setOut (null) не сбрасывает System.out на значение по умолчанию. Перед изменением следует сохранить ссылку на исходную версию System.out и вернуть ее к этой ссылке. –