gpt4 book ai didi

java - Robolectric String.format() 格式化数字时的无效行为

转载 作者:行者123 更新时间:2023-12-02 09:42:44 32 4
gpt4 key购买 nike

在应用程序中有一个简单的代码:

String.format(Locale.getDefault(), "%d", count)

一切都很好,但是当用户在手机上选择阿拉伯语时,数字将以阿拉伯文字格式显示(显然)。

那么问题出在哪里呢?

我想用 Locale.US 替换 Locale.getDefault() 以获得“正常”数字,但也想为此编写测试。

有一个问题。Robolectric 在测试中显示前的数量。 “3”而不是“٢”。

我的测试代码:

public class SideMenuMainContentViewTest {

private static final String ARABIC_LANGUAGE_LOCALE_CODE = "ar-rEG";

private SideMenuMainContentView sideMenuMainContentView;
private AttributeSet attributeSet;

@Before
public void setup() {
attributeSet = Robolectric.buildAttributeSet().build();

sideMenuMainContentView = new SideMenuMainContentView(ApplicationProvider.getApplicationContext(), attributeSet);

}

@Test
public void test_getBookedRidesCountText() {

assertEquals("3", sideMenuMainContentView.getBookedRidesCountText(3));
}

@Test
@Config(qualifiers = ARABIC_LANGUAGE_LOCALE_CODE)
public void test_getBookedRidesCountText_notSupportedLanguage() {

assertEquals("3", sideMenuMainContentView.getBookedRidesCountText(3));
}
}

知道如何更改此行为并在测试中(例如应用程序运行时)获取文字数字吗?

最佳答案

要使像 ٢ 这样的东方阿拉伯数字出现在单元测试中,您可以将区域设置设置为 Locale.forLanguageTag("ar-u-nu-arab") - 使用工厂方法 forLanguageTag 和 BCP 47 语言标记字符串“ar-u-nu-arab”,明确指定阿拉伯编号系统。 new Locale("ar-u-nu-arab") 不起作用,因为构造函数不解析编号系统。

有关 Java 8 语言环境中编号系统的更多信息,请参阅此链接:https://www.oracle.com/technetwork/java/javase/java8locales-2095355.html#num-systems

关于java - Robolectric String.format() 格式化数字时的无效行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56931420/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com