Заметил тенденцию однотипных вопросов, ответ на которые можно легко найти на офф сайте, не имея опыта работы с mobile автоматизацией. Не является исключением и текущий вопрос.
Вас не смущает тот факт, что метод возвращает int, а assert ваш проверяет на boolean?
Опять-таки, возвращаясь к выше приведенному источнику:
Returns the visibility status for this view.
Related XML Attributes
android:visibility
Returns
One of VISIBLE, INVISIBLE, or GONE.
Смотрим дальше:
android:visibility
Controls the initial visibility of the view.
Must be one of the following constant values.
Constant Value Description
visible 0 Visible on screen; the default value.
invisible 1 Not displayed, but taken into account during layout (space is left for it).
gone 2 Completely hidden, as if the view had not been added.
Собственно вопрос был следующий: что возвращает вам getVisibility()? Если элемента вообще нет, то по идее должно вернуть int код GONE.
Т.е. solo.getView(id) банально бросает эксепшен, если элемент не найден? Ну в таком случае, наиболее простым вариантом конечно будет обернуть в try / catch, как вы и сделали. Единственное, зачем вы ловите AssertionError? Неужели он именно его плюет?
Я бы все же еще поискал вариант проверки, существует ли элемент, в родных API Robotium’а. Наверняка что-то найдете.
Объект с id существует в момент проверки? Если Вам нужно проверить что объекта не существует, то я бы делал это так: assertNull(solo.getView(id));
где id - это id вашего объекта, например id.button2