Я применил тестовое приложение, используя класс приборов. Я хочу проверить свое приложение на разные данные о намерениях.
Есть ли способ запустить наше приложение под тестированием, несколько раз
Это зависит от того, сколько тестового метода вы получили в вашем классе приборов
public void testFirstTime() {
Intent intent = new Intent(getInstrumentation().getTargetContext(), MyActivity.class);
Foo foo = new Foo();
intent.putExtra("param", foo);
setActivityIntent(intent);
MyActivity myActivity = getActivity();
assertNotNull(myActivity);
// do some assert
}
public void testSecondTime() {
Intent intent = new Intent(getInstrumentation().getTargetContext(), MyActivity.class);
Bar bar = new Bar();
intent.putExtra("param", bar);
setActivityIntent(intent);
MyActivity myActivity = getActivity();
assertNotNull(myActivity);
// do some other assert
}
Нашел решение, не самый красивый. В setUp я сделал:
protected void setUp() throws Exception {
setActivityInitialTouchMode(false);
if(stage == 0){
in1 = new Intent();
in1.putExtra(Defintiens.EXTRA_1, CopyUSerDetailsServiceMock.getMock1());
in1.putExtra(Defintiens.EXTRA_2, UserProtfolioMock.getMock1());
setActivityIntent(in1);
}else if (stage == 1){
in2 = new Intent();
in2.putExtra(Defintiens.EXTRA_1, getMock1());
in2.putExtra(Defintiens.EXTRA_2, getMock1());
setActivityIntent(in2);
}else if (stage == 3){
in3 = new Intent();
in3.putExtra(Defintiens.EXTRA_1, getMock1());
in3.putExtra(Defintiens.EXTRA_2, getMock1());
setActivityIntent(in3);
}else if (stage == 4){
in4 = new Intent();
in4.putExtra(Defintiens.EXTRA_1, getMock1());
in4.putExtra(Defintiens.EXTRA_2, getMock1());
}
mActivity = getActivity();
super.setUp();
}
@Override
protected void tearDown() throws Exception {
mActivity.finish();
super.tearDown();
}
private static int stage = 0;
public void testInjectExtra2(){
stage = 2;
//In each test you should set the stage to tour testing
//...... Run your test
}
Теперь в каждом тесте активность перезапустится с намерением, я хочу