これは、AndroidでのユニットテストにRobolectricフレームワークを使用することと関係があります。通常の実行では問題のないコードでnullポインター例外が発生します。私はロボエレクトリックを始めたばかりなので、おそらくかなり簡単です。
テスト用の呼び出しコードは次のとおりです。
@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を{@seemQuestions}クラスメンバー変数にロードします**/
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
リソースを取得するためにこれを行うために特別なことをする必要がありますか?