Есть ли способ поместить поддельный класс в (андроид) намерение во время контрольно-измерительных приборов.Что-то вроде следующих строк?
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Mock(serializable = true)
SomeClass someClass; //Defined also as implementing Serializable
@Rule
public ActivityTestRule<MainActivity> mMainActivityTestRule = new
ActivityTestRule<MainActivity>(MainActivity.class,false,false);
@Rule
public MockitoRule rule = MockitoJUnit.rule();
@Test
public void testGetQuote() throws Exception {
Intent i = new Intent();
Bundle b = new Bundle();
b.putSerializable("someClass", someClass);
i.putExtras(b); //Fails!
// more code here
}
Приведенный выше код не работает с Parcelable encountered IOException writing serializable object
Есть идеи?
--- Отредактировано Код с использованием аннотации @Spy выглядитследующим образом:
@RunWith(AndroidJUnit4.class)
class ExampleInstrumentedTest {
@Spy
SomeClass someClass; //Same behaviour when @Mock was used
@Spy
Intent intent;
@Rule
public ActivityTestRule<MainActivity> mMainActivityTestRule = new
ActivityTestRule<MainActivity>(MainActivity.class,false,false);
@Rule
public MockitoRule rule = MockitoJUnit.rule();
@Test
public void testGetQuote() throws Exception {
when(someClass.getFoo(anyString())).thenReturn(expectedAnswer);
when(intent.getSerializableExtra(anyString())).thenReturn(someClass);
//Intent object has identifier of, e.g. @5650 here
intent.putExtra("someClass",someClass);
mMainActivityTestRule.launchActivity(intent);
//more Code here
}
...
//inside the Main activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Intent has different id here, e.g. @5850
Intent i = getIntent();
// intent.getSerializableExtra("someClass") returns null
//...
}