失败:org.junit.ComparisonFailure:文件testfile_1.txt第1行

时间:2015-02-22 07:08:31

标签: java

我再次......同样的背景。我在Dr.Java中为我的构造函数运行了一个测试文件。它是关于读取要测试的目录中的文件。以下是测试文件中内容的一部分:

public void cw_println_file1 () throws Exception {
String actual, msg, expect;
String filename;
CensoredWriter out;
for(int i=0; i<fileLines.length; i++){
  String [][] test = fileLines[i];
  String censor = test[0][0];
  String [] outLines = test[1];
  String [] expectLines = test[2];
  filename = String.format("testfile_%d.txt",i);
  out = new CensoredWriter(filename,censor);
  for(int j=0; j<outLines.length; j++) { 
  out.println(outLines[j]);
  }
  out.close();
  assertLines(expectLines, filename);
}
}

我收到如下错误消息:

文件:C:\ Users \ jiangbuyun \ Desktop \ lab5 \ distrib-lab05 \ Lab05Tests.java [line:137]

失败: org.junit.ComparisonFailure:文件testfile_1.txt第1行

期待: A%!^ #@ er-scooper,或%!^ #@ scoop,是用于拾取动物的设备

实际: A%!^ #@ er-scooper或%!^ #@ scoop,是一种用于从公共场所和码头拾取动物粪便的设备,特别是那些狗。 %!^ *#@ er-scooper设备通常有袋子或袋子附件。

预期:&lt; ... ed to pick up animal []&gt;

但是:&lt; ...来接收动物[来自公共场所和院子的粪便,特别是那些狗的粪便。 %!^ *#@ er-scooper设备通常有一个袋子或袋子附件。]

我发现它应该停在“动物”之后的括号中,并且两个括号之间没有任何内容,但它实际上继续阅读文本并将其放入括号内。

public class CensoredWriter extends PrintWriter {

String censored;

public CensoredWriter(OutputStream o, String c) {
    super(o);
    this.censored = c;
}

public CensoredWriter(File f, String c) throws Exception {
    super(f);
    this.censored = c;
}

public CensoredWriter(String s, String c) throws Exception {
    super(s);
    this.censored = c;
}

public String transform(String s) {
    String a = s.replaceAll(censored, "%!^*#@");
    return a;
}

@Override
public void print(String s) {
    super.print(transform(s));
}

@Override
public void println(String s) {
    print(s);
    flush();
}

}

1 个答案:

答案 0 :(得分:0)

根据您发布的内容,问题是您似乎将censored替换为"%!^*#@",因此部分实施可行。但是,在animal之后停止是尚未实施的部分。

顺便提一下,在提问时,尽量提供必要的背景。例如,我认为您的方法cw_println_file1是一种测试(@Test)方法 - 无需猜测就可以看到它。此外,如果您的方法需要@Before方法中的某些内容(例如。fileLines似乎在其他地方声明),那么读者可以帮助您理解您的问题以查看所需的部分。