我正在嘗試使用Robolectric(1.2)和Dagger測試應用程序。Robolectric和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;
}
一切都很好,我可以在eclipse中調試,直到XmlPullParserFactory.newInstance()是擊中。在這一點上,我收到了可怕的:
java.lang.RuntimeException: Stub!
at org.xmlpull.v1.XmlPullParserFactory.newInstance(XmlPullParserFactory.java:13)
at ....
at ....
我是比較新的Robolectric和匕首,也許我做錯事的實施,我不認爲在配置中。 我應該檢查什麼以確保一切正常?你們看到這段代碼有什麼明顯的錯誤嗎?
Hey Kap,我正在嘗試類似的事情,並且在構建我的測試模塊圖時收到了令人困惑的異常。你介意看看是否看到類似的東西嗎? http://pastebin.com/G33aHkAa - 乾杯。 – OceanLife 2013-06-10 00:01:56
從我的蹤跡可以看出,這是一個不同的問題。你的問題看起來更像是一個模塊配置問題。匕首的getModuleAdapter吐出一些註釋問題... – 2013-06-27 10:30:14
謝謝Kap:我在SO上發佈了這個問題,並在找到解決方案時自我回答。更多細節[here](http://stackoverflow.com/questions/17144824/robolectric-dagger-and-compile-time-moduleadapter-creation)。 – OceanLife 2013-06-27 13:02:24