当前位置: 首页 > 知识库问答 >
问题:

2个相同的字符串,当在Junit测试中比较时,它告诉我它们不相等

寿丰
2023-03-14

我试着比较这个. txt

USER bonb Bird
USER colc Colin Cook
EVENT alea Class ULE 11/11/2011 9:00 11/11/2011 13:00
EVENT alea Meeting MIC 11/11/2011 13:00 11/11/2011 14:00
EVENT alea Lunch Cafeteria 11/11/2011 14:00 11/11/2011 15:00
EVENT bonb Class ULE 11/11/2011 15:00 11/11/2011 19:00
EVENT bonb Meeting Library 11/11/2011 13:00 11/11/2011 14:00

在我的班级档案里。java我使用此方法将txt的内容转换为字符串。

public String readElements() throws FileException {
        FileReader fr = null;
        BufferedReader br = null;
        StringBuilder line = new StringBuilder();
        String lineAux = "";

        logger.info("Reads an element of the file: " + this.fileName);

        try {
            fr = new FileReader(this.fileName);
            br = new BufferedReader(fr);

            lineAux = br.readLine();
            while (lineAux != null) {
                line.append(lineAux + System.getProperty("line.separator"));
                lineAux = br.readLine();
            }
        } catch (IOException e) {
            logger.warn("File Error: Can´t open the file: " + this.fileName);
            throw new FileException("File Error: Can´t open the file " + this.fileName);
        } finally {
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (IOException e) {
                logger.warn("File error: Can´t open the file: " + this.fileName);
                throw new FileException("File error: Can´t open the file: " + this.fileName);
            }
        }
        return line.toString();
    }

我使用这个测试来尝试文件。Java TestReadElements将该String与文件内容进行比较。当我在eclipse中使用JUnit或在Linux终端中使用build.xml时,测试失败。

@Before
    public void setUp() throws Exception {
        this.fileName = "./etc/test/rightCalendar.txt";
        this.file = new File(this.fileName);
    }

@Test
    public void testReadElements() throws FileException {
        assertEquals("USER alea Alex Archer\n" + "USER bonb Bonnie Bird\n" + "USER colc Colin Cook\n"
                + "EVENT alea Class ULE 11/11/2011 9:00 13:00\n" + "EVENT alea Meeting MIC 11/11/2011 13:00 14:00\n"
                + "EVENT alea Lunch Cafeteria 11/11/2011 14:00 15:00\n"
                + "EVENT bonb Class ULE 11/11/2011 15:00 19:00\n"
                + "EVENT bonb Meeting Library 11/11/2011 13:00 14:00\n", this.file.readElements());
    }

我不知道问题在哪里(如果问题在build.xml或其他文件中)我已经改变了几个小时的小东西,我累了...这些是路径文件和对比结果显示是错误的

共有1个答案

阎修杰
2023-03-14

您正在显式地将从读取器读取的行与System.get属性("line.separator")连接;您的屏幕截图表明您正在Windows上运行此操作(路径以C:\用户开始),该操作使用\r\n作为行分隔符。

预期字符串的行使用\n作为行分隔符。

因此,字符串不相等,因为它们使用不同的行分隔符。

最好将事物保持为字符串列表,然后只比较列表(list.equals对元素进行成对比较,因此实际上是一样的——只是没有对行分隔符的任何混淆)。

 类似资料:
  • 根据逻辑,我需要实现两个,如果它们以相同的“相对”顺序具有相同的元素,则它们被认为是相等的。 举个例子,以下一对列表被认为彼此相等: 只要遵守相对顺序,就可以认为它们是平等的。 作为反例,这两个不相等: 导致 和 交换到位。 所以,基本上我发现这很有挑战性,因为这不是顺序完全重要的情况,也不是顺序完全不重要的情况。在这种情况下,我会使用普通的< code>list1.equals(list2)方法

  • 问题内容: 通过搜索发现了类似的问题,但我是一位新的(糟糕的)程序员,无法理解答案。 我有一个.txt文件,其中包含多个字符串,以’-‘分隔。我使用拆分将一些字符串分成变量,其中两个相等,但是在if语句中它们不相等。 这将产生以下结果: 瑞典 瑞典 没有 在两个“ Sweden”字符串之前和之后都有一个空格,并且它们都用大写字母“ S”编写,但不相等吗?我在哪里搞砸了? 问题答案: 最后一个元素包

  • 我想排序2列表并比较它们,但排序方法不起作用。我有2个字符串列表,其中包括整数。 这些是我的名单 我的getwords方法返回:

  • 我在JQuery的AJAX请求中发现了一个回显值的有趣问题,但我没有为它提供一个answare: 如果你需要更多的信息告诉我!我希望任何人都知道是什么导致了这个问题!

  • 问题内容: 我想将多个字符串相互比较,并找到最相似的字符串。我想知道是否有任何库,方法或最佳实践会返回我哪些字符串与其他字符串更相似的字符串。例如: “The quick fox jumped” -> “The fox jumped” “The quick fox jumped” -> “The fox” 该比较将返回第一个比第二个更相似。 我想我需要一些方法,例如: 某处有这样的东西吗? 编辑:

  • 标题可能有点难以理解,因为我不擅长总结事情,但我试图做的事情实际上非常简单(在任何其他语言中)。 我想测试赛贝斯表中的一些数据,特别是两列。这两列有冒号分隔的字符串——不幸的是,两列之间每个子字符串的位置不一样。是这样的: 第1栏 子字符串1:子字符串3:子字符串5 子字符串2:子字符串4:子字符串6 column_2 子字符串3:子字符串1:子字符串5 Substring6: substring