为什么我预期的字符串与输出不匹配?
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 代码进行比较,这将不相等。
所以只需编辑一个或另一个,使它们匹配!
我写了一个方法(使用 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 代码进行比较,这将不相等。
所以只需编辑一个或另一个,使它们匹配!