Не удается заставить мою текущую активность assert работать

#android #robotium

#Android #robotium

Вопрос:

У меня есть 2 действия, первое из которых — это запуск, который в своем методе create всегда вызывает запуск второго. Мои робоэлектрические тесты проходят нормально

Активность

 public class LoginActivity extends Activity {

/** Called when the activity is first created. */
@Override    

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.loginview);

    Intent intent = new Intent(this,MainActivity.class);
    startActivity( intent );
}
 

Я знаю, что моя активность работает нормально, потому что она запускается на моем устройстве и в эмуляторе

Мои робоэлектрические тесты

 public void testLoginFirstTime() throws Exception 
{
    LoginActivity activity = new LoginActivity();        
    activity.onCreate(null);
    assertThat(activity, new StartedMatcher(MainActivity.class));        
}
 

Мой тест Robotium

 public void setUp() throws Exception {
    solo = new Solo(getInstrumentation(), getActivity());
}


public void testLoginFirstTime() throws Exception 
{
    solo.assertCurrentActivity("Expected MainActivity to launch", MainActivity.class);
}
 

Что не так с моим утверждением robotium? он всегда считает, что текущая активность является логином, хотя, когда я смотрю на эмулятор / устройство, я вижу, что Robotium действительно запускает MainActivity, но, похоже, он не знает, что новое действие было запущено.
Редактировать: подразумевается, что если я добавлю кнопку в свой вид входа в систему и запущу новую активность с помощью нажатия кнопки, то Robotium выполнит щелчок и обнаружит, что новая активность запущена нормально.

Редактировать: похоже, это ограничение Robotium http://groups.google.com/group/robotium-developers/browse_thread/thread/79a70038c16e35e6 Однако это все еще оставляет меня с вопросом о том, как протестировать мое приложение с помощью robotium так же, как пользователь будет его использовать, т. Е. Не обманывать и начинать с другого действия: (

Ответ №1:

Вам нужно использовать конструктор solo = new Solo(Instrumentation instrumentation), а затем после создания объекта Solo вы вызываете getActivity(), чтобы начать первое действие. Тогда это сработает.