Java Android Studio中的JUnit未正确使用货币格式

Java Android Studio中的JUnit未正确使用货币格式,java,junit,android-studio,junit4,currency-formatting,Java,Junit,Android Studio,Junit4,Currency Formatting,注意:我现在使用Google设置在Android Studio中进行JUnit测试 我试图对一段代码进行单元测试,该代码将货币值存储为double,并以该货币的格式输出字符串。我使用java.text.NumberFormat来执行此操作: public NumberFormat viewFormat; public NumberFormat editFormat; public CurrencyField(String languageCode, String countryCode) {

注意:我现在使用Google设置在Android Studio中进行JUnit测试

我试图对一段代码进行单元测试,该代码将货币值存储为double,并以该货币的格式输出字符串。我使用java.text.NumberFormat来执行此操作:

public NumberFormat viewFormat;
public NumberFormat editFormat;

public CurrencyField(String languageCode, String countryCode) {
    viewFormat = NumberFormat.getCurrencyInstance(new Locale(languageCode, countryCode));
    viewFormat.setRoundingMode(RoundingMode.FLOOR);
这里是我获取要格式化以显示的值的位置:

public String getDisplayValue()
{
    double numberValue = (double) mValue.getValue();
    return mField.viewFormat.format(numberValue);
}
当我将代码作为Android应用程序的一部分运行时,数字的格式是正确的。例如,如果我使用以色列谢克尔作为我的货币,我会

Field currencyField = new CurrencyField("he", "ISR");
其中he和ISR分别是希伯来语和以色列语的代码。如果数字在内部存储为双精度45.12,则输出为字符串45.12₪,这是正确的。但是,当我尝试使用JUnit运行相同的代码时,测试结果如下:

org.junit.ComparisonFailure:  
Expected :45.12 ₪  
Actual   :¤ 45.12
在我看来,JUnit或Android Studio在测试过程中不知何故丢失了一些Java库。我甚至无法通过编程方式获得预期值的谢克尔符号。我尝试使用java.util.Currency,但没有成功,然后我尝试了

expectedDisplayValue += ((CurrencyField) field).viewFormat.getCurrency().getSymbol(new Locale("he", "ISR"));
这也没用。我必须明确定义

private String expectedDisplayValue = "45.12 ₪";

为什么格式化在运行时有效,但在测试中无效?

结果表明我使用了错误的ISO 3166-1国家代码。我使用的是alpha 3代码ISR,而不是alpha 2代码IL,后者在应用程序中有效,但在测试中无效。当我使用希伯来语时,测试仍然会给我错误的符号和格式,但是我会问另外一个问题。同时,我将使用其他一些外币进行测试。

我猜JUnit中没有设置语言环境。