Kotlin Android Studio:org.junit.ComparisonFailure 与 NBSP

Kotlin Android Studio: org.junit.ComparisonFailure with NBSP

我有这个代码

@Test
fun price_twelve_cupcakes() {
    val viewModel = OrderViewModel()
    viewModel.setQuantity(12)
    viewModel.price.observeForever {}
    assertEquals(",00", viewModel.price.value)
}

我明白了 Error

还有这个Comparison Failure

我遇到了与 NBSP 标志相同的问题!花了一些时间弄清楚如何处理测试

长话短说:

  1. 在您的字符串格式化程序中传递语言环境
  2. 对于使用 NBSP 而不是 space(法语、乌克兰语等)的区域设置的测试,将 NBSP (\u00A0) 的 unicode 版本粘贴到您的测试字符串中

所以

assertEquals("27,00 Br", priceToCheck)

应该变成

assertEquals("27,00\u00A0Br", priceToCheck)

另请注意,不同的语言环境不仅有不同的分组符号(逗号、点、space、NBSP 等),而且还有不同的美分分隔符(逗号、点)

由Locale的字符串格式设置引起,涉及DecimalFormat,String.format,NumberFormat.getCurrencyInstance() 如果您希望您的字符串以稳定的方式格式化,无论设置什么默认区域设置,您都可以使用 DecimalFormat(选择模式)或传递您想要的区域设置(比如 Locale("en","IE") for Ireland )