我在独立测试中调用以下内容。
此方法的输出为“50 000”。
我已经检查过,没有可以修剪的空间。 (也确实尝试修剪以防万一)。
当我执行相等检查时,测试失败说:
org.junit.ComparisonFailure:
Expected :50 000
Actual :50 000
为什么会这样?
这是我的方法。
import java.text.NumberFormat;
public String aaa() {
String amt = "50000";
Locale locale = new Locale("sv","SE");
NumberFormat f = NumberFormat.getInstance(locale);
amt = f.format(Long.parseLong(amt));
return amt;
}
这是我的测试用例。
@Test
public void test() {
assertEquals("50 000", myClass.aaa());
}
我在这里错过了什么?为什么它们不相等?
答案 0 :(得分:2)
结果中的空格不是普通的空格字符,而是不间断的空格字符。试试这个,看看测试是否成功:
assertEquals("50\u00a0000", myClass.aaa());
答案 1 :(得分:0)
如果你看到第 2 位字符的值为 160,当你查看该值时会发现它是指非换行空格
,当您断言多个断言时,对 Junit4 使用 ErrorCollector
或对 Junit5 使用 assertAll
也是一个好习惯
@Test
public void test() {
// Arrange
StringBuilder builder = new StringBuilder();
builder.append("50").append((char) 160).append("000");
// Act
String actual = myClass.aaa();
// Assert
assertEquals(6, actual.length());
assertEquals(builder.toString(), actual);
}