我的单元测试有一个问题,其中期望的字符串和结果字符串完全相同,但是测试失败并说它们是不同的。 这是测试的代码:
import org.junit.Test;
import java.text.NumberFormat;
import java.util.Locale;
@Test
public void convertFromDouble() {
double value = 123456.789;
Locale locale = Locale.forLanguageTag("pt-PT");
String expected = "123 456,789";
final NumberFormat numberInstance = NumberFormat.getNumberInstance(locale);
numberInstance.setMinimumFractionDigits(0);
numberInstance.setMaximumFractionDigits(10);
Assert.assertEquals(expected, numberInstance.format(value));
}
我从NumberConverter.convert(value, locale)
获得的值等于我的expected
变量。我尝试调试代码,发现两个值也具有完全相同的字符数(11)。我看到的唯一的差异(也是我认为引起错误的原因)是,expected
变量中的SPACE字符表示为字节32,而在获得的结果中,其表示为- 96。知道为什么会这样吗?
编辑:要注意,该测试仅在我从Java 8升级到Java 11时才开始失败。