Передача издеваться над классом в намерении Android - PullRequest
0 голосов
/ 17 мая 2018

Есть ли способ поместить поддельный класс в (андроид) намерение во время контрольно-измерительных приборов.Что-то вроде следующих строк?

@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
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...