为什么我预期的字符串与输出不匹配?

Why is my expected string not matching the output?

我写了一个方法(使用 BlueJ)returns 用户的银行账户信息作为单行描述:

public String toString()
    {
        return (acctNumber + "\t" + name + "\t" + fmt.format(balance));
    }

然后我为如下所示的方法编写了单元测试:

public void testToString()
    {
        Account account1 = new Account("Aurora", 772340912, 1000.00f);
        assertEquals("Test account toString failed.", "772340912    Aurora    ,000.00", account1.toString());
    }

我查看了 BlueJ 中的 "Resources" 文件夹,它说: bluej.editor.tabsize=4 所以我假设这意味着一个制表符等于 4 个空格。然而,即使我在预期输出中使用了四个空格,我的单元测试仍然失败。有任何想法吗?提前致谢!

一个制表符不是四个 space。 bluej.editor.tabsize=4 表示 BlueJ 系统将选项卡渲染为四个 spaces。

然而,无论它们如何呈现,标签仍然是标签,与 space 完全不同。 '\t' == 11,而 ' ' == 32" " 甚至不能与 int 相比,因为它是 String,而不是 char

对于预期的字符串,使用 "\t" 而不是 " "

制表符是不同于 space 字符的 ASCII 字符。这可能会导致某种不匹配,其中选项卡的 ASCII 代码与 space 的 4 个 ASCII 代码进行比较,这将不相等。

所以只需编辑一个或另一个,使它们匹配!