#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(), чтобы начать первое действие. Тогда это сработает.