I am trying to write an Android application using Dagger. Trying to follow the TDD approach, I started writing a test for my First activity. For writing tests I am using Robole
Seems like you're looking for module override (like Roboguice does). I couldn't find any, but in my tests, I've been using something like this:
MyObjectTest.java
@Test
public void testMyObject() {
ObjectGraph objectGraph = ObjectGraph.create(new TestModule());
MyObject object = objectGraph.get(MyObject.class);
assertNotNull(object);
assertEquals("Received message from MyObjectTestImpl", object.getMessage());
}
TestModule.java
public class TestModule {
@Provides
public Library provideMyObject() {
return new MyObjectTestImpl();
}
}
If MyObject
is used in an Activity
, I can also test it:
@RunWith(RoboGradleTestRunner.class)
public class RoboTest {
@Test
public void testTextView() {
MainActivity activity = (MainActivity) Robolectric.buildActivity(MainActivity.class).create().get();
assertEquals("Received message from MyObjectTestImpl", activity.getMyObject().getMessage());
}
}