Robolectric (1.2) と Dagger を使用してアプリをテストしようとしています。
私のテスト モジュールは非常に単純です。
@RunWith(RobolectricTestRunner.class)
public class XmlTests {
// Injected
@Inject XmlPullParser mParser;
@Inject AlarmActionSpawner mActionSpawner;
@Inject FileHelper mFileHelper;
@Inject XmlSerializer mSerializer;
@Inject ConcurrentObjectMonitor mObjMonitor;
@Module(
includes = ServicesModule.class,
entryPoints = XmlTests.class,
overrides = true
)
static class TestModule {
public TestModule() { }
}
@Before
public void setUp() throws Exception {
Log.i("setUp() entering.");
ObjectGraph og = ObjectGraph.create(new TestModule());
og.validate();
og.inject(this);
...
含まれている ServiceModule には XmlServiceModule が含まれています。
@Module
public class XmlServiceModule {
@Provides @Singleton XmlSerializer provideXmlSerializer() {
return android.util.Xml.newSerializer();
}
@Provides @Singleton XmlPullParser provideXmlPullParser() {
XmlPullParser pullParser = null;
try {
XmlPullParserFactory xppf = XmlPullParserFactory.newInstance();
pullParser = xppf.newPullParser();
} catch (XmlPullParserException e) {
throw new RuntimeException(e.getMessage());
}
return pullParser;
}
XmlPullParserFactory.newInstance()がヒットするまで、すべて問題ありません。Eclipse 内でデバッグできます。その時点で、私は恐ろしいものを受け取ります:
java.lang.RuntimeException: Stub!
at org.xmlpull.v1.XmlPullParserFactory.newInstance(XmlPullParserFactory.java:13)
at ....
at ....
私はRobolectricとDaggerに比較的慣れていません。実装で何か間違ったことをしているのかもしれませんが、構成では考えていません。すべてが正常であることを確認するには、何を確認すればよいですか? このコードに明らかな間違いがありますか?