Java 重写system.out.println时发生JUnit断言错误

Java 重写system.out.println时发生JUnit断言错误,java,junit,assert,Java,Junit,Assert,我按照以下步骤重写java中的System.out.println调用 这是节目 public class palstr { public String rev(String a) { String b=new StringBuffer(a).reverse().toString(); return b; } public int check(String a,String b) { if(a.equals(

我按照以下步骤重写java中的
System.out.println
调用

这是节目

public class palstr
{
    public String rev(String a)
    {
        String b=new StringBuffer(a).reverse().toString();
        return b;
    }
    public int check(String a,String b)
    {
        if(a.equals(b))
        {
                    return 1;
        }
        else
        {
                    return 0;
        }
    }

   public static void main(String a){
     palstr obj = new palstr();
     String b = obj.rev(a);
     int check= obj.check(a, b);

     if(check == 1){
       System.out.println("palindrome");
     } else {
       System.out.println("not palindrome");
     } 
   }
}
这就是测试用例

import java.io.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

public class palstrTest
{
    @Test
    public void mainTest(){
        System.out.println("madam is a palindrome string");
        ByteArrayOutputStream outContent = new ByteArrayOutputStream();
        System.setOut(new PrintStream(outContent));
        palstr.main("madam");
        assertEquals("palindrome", outContent);
    }
 }
当我运行测试时,我得到以下错误

.madam is a palindrome string
E
Time: 0.026
There was 1 failure:
1) mainTest(palstrTest)
java.lang.AssertionError: expected:<palindrome> but was:<palindrome
>
.madam是一个回文字符串
E
时间:0.026
有1次失败:
1) 主测试(palstrTest)
java.lang.AssertionError:应为:但为:

Well
outContent
是一个
ByteArrayOutputStream
,而不是
字符串。这两件事是不同的——听起来你应该将
ByteArrayOutputStream
的内容转换成一个字符串,然后比较它们……正如你在做我的回答时所看到的,你尝试比较的类型不匹配->按照Jon说的做。