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 标志相同的问题!花了一些时间弄清楚如何处理测试
长话短说:
- 在您的字符串格式化程序中传递语言环境
- 对于使用 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 )
我有这个代码
@Test
fun price_twelve_cupcakes() {
val viewModel = OrderViewModel()
viewModel.setQuantity(12)
viewModel.price.observeForever {}
assertEquals(",00", viewModel.price.value)
}
我明白了 Error
还有这个Comparison Failure
我遇到了与 NBSP 标志相同的问题!花了一些时间弄清楚如何处理测试
长话短说:
- 在您的字符串格式化程序中传递语言环境
- 对于使用 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 )