gpt4 book ai didi

Android/Robolectric 框架工作 - 实例化 Activity 在 getResource 上返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:46:04 25 4
gpt4 key购买 nike

这与在 Android 上使用 Robolectric 框架进行单元测试有关。我在正常运行时没有问题的代码上遇到空指针异常。我刚开始使用机器人电动工具,所以它可能非常简单。

这是测试的调用代码:

@Test
public void testInitUtilsInitSequenceNumberIsRandom() {

// create an activity for reference
InitUtils initUtils = new InitUtils();

// do static initialization to parse questions into memory
InitUtils.initialize(initUtils); // <============ the call from roboelectric framework

// retreive app state
AppState appState = (AppState) initUtils.getApplicationContext();

// fill in later
fail("not implemented");

}

这是崩溃的 InitUtils 中调用的方法

/** * 将 XML 加载到 {@see mQuestions} 类成员变量中 * */

   public static void initializeQuestions(Activity activity, AppState appState)                  {

/* create XML Parser */
XmlResourceParser questionBatch;
/* local question variable */
Question question = null;

/* retrieve the XML for parsing */
// =============== This returns null ==============================
questionBatch = activity.getResources().getXml(R.xml.questions);

/* Parse the XML */
int eventType = -1;
/* iterate through XML */
while (eventType != XmlResourceParser.END_DOCUMENT) {
if (eventType == XmlResourceParser.START_TAG) {

/* Get the questions */
// ================================= NPE exception ======================
String strName = questionBatch.getName();
...etc

为了检索资源,我需要做些什么特别的事情吗?

最佳答案

我对 Robolectric 这个东西一无所知,但是 getResources() 返回 null 意味着它在框架调用 Activity.onCreate() 之前被调用。我不知道你从哪里得到这个 Activity ,但如果你在 Instrumentation 之上进行单元测试,你需要确保你的 instrumentation 线程阻塞,直到主线程完成执行,使用类似的东西:

http://developer.android.com/reference/android/app/Instrumentation.html#waitForIdleSync()

如果您正在使用 startActivitySync,这将为您完成:

http://developer.android.com/reference/android/app/Instrumentation.html#startActivitySync(android.content.Intent)

关于Android/Robolectric 框架工作 - 实例化 Activity 在 getResource 上返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5494210/

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