2014-02-22 2 views
-1

Я пытаюсь проверить вывод консоли путем перенаправления стандартного вывода на объект 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); 
    } 

} 
+1

Если вам нужна наша помощь, тогда опубликуйте очень объяснительное сообщение об ошибке, которое дает вам JUnit. – chrylis

+0

Просто примечание: вызов System.setOut (null) не сбрасывает System.out на значение по умолчанию. Перед изменением следует сохранить ссылку на исходную версию System.out и вернуть ее к этой ссылке. –

ответ

5

У вас есть дополнительное пространство на выходе.

System.out.format("%s ", "a"); 
System.out.format("%s ", "- "); 
//      ^
String str="a - ";  
+1

Мальчик, ты должен прочитать это несколько раз, не так ли? При форматировании это «а». Два пробела после «-» - один из формата «% s» и один из строкового литерала «-». –

+0

@HotLicks Right – Kevin

+0

Проблему можно было довольно легко диагностировать, просто распечатав две строки и (тщательно) соблюдая разницу. –

Смежные вопросы