机器人电气测试:无法获得现场



我正在使用机器人电气框架来测试我的android项目。它工作得很好,但我找不到解决问题的方法:

在我的活动课上,我必须按照以下方式学习当前的语言:

private void setCurrentLanguageChoosenInRadioGroup() {
    Configuration c = new Configuration(getResources().getConfiguration());
    String locale = c.locale.getLanguage();
    if(locale.equalsIgnoreCase(Constants.DUTCH_LANGUAGE)){          
        radioLanguageGroup.check(dutchButton.getId());
    }
    else if(locale.equalsIgnoreCase(Locale.FRENCH.getLanguage())){
        radioLanguageGroup.check(frenchButton.getId());
    }
    else if(locale.equalsIgnoreCase(Locale.ENGLISH.getLanguage())){
        radioLanguageGroup.check(englishButton.getId());
    }
}

但是在"c.locale.getLanguage();"行中,我得到nullpointerexception。这是我的测试方法:

public void setUp() throws Exception {
    activity = new MainActivity();
    activity.onCreate(null); ....

有谁知道问题是什么以及如何解决它吗?

您正在获得一个NPE,因为没有设置区域设置字段。如果在实例化Configuration对象之后进行调试并在行中放置一个断点,请注意加载的实际类。你会发现它不是Configuration,而是ShadowConfiguration

你可以在这里查看源代码:https://github.com/pivotal/robolectric/blob/master/src/main/java/org/robolectric/shadows/ShadowConfiguration.java

我假设(没有实际运行您的代码)getResources().getConfiguration()要么返回null,要么没有设置区域设置。在ShadowConfiguration中有一个setLocale方法,您可以在测试中设置它来操作setCurrentLanguageChoosenInRadioGroup()方法中的逻辑流。

将机器人升级到版本2。X解决了问题!在0.9版本中。这是他们网站上的默认版本,它是不适用的!

因此,它可以这样改编:

Locale loc = new Locale("desired language/country");
Configuration c = new Configuration();
c.setLocale(loc);

相关内容

  • 没有找到相关文章

最新更新