Java 重写system.out.println时发生JUnit断言错误
我按照以下步骤重写java中的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(
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:应为:但为:
WelloutContent
是一个ByteArrayOutputStream
,而不是字符串。这两件事是不同的——听起来你应该将ByteArrayOutputStream
的内容转换成一个字符串,然后比较它们……正如你在做我的回答时所看到的,你尝试比较的类型不匹配->按照Jon说的做。