Я пишу тесты с андроидами новой эспрессо-фреймворк и считаю, что он работает хорошо. Одна неприятная вещь (не особенно для эспрессо) заключается в том, что я должен убедиться, что мой экран бодрствует и разблокирован для тестов. Я нашел обходное решение (через различные источники), однако я не уверен, что лучший способ его интегрировать.
Итак, это то, что я сделал, в моем "домашнем" действии у меня есть следующий код:
Home.class:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/************ Put this in a conditional for a test version ***********/
KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock keyguardLock = km.newKeyguardLock("TAG");
keyguardLock.disableKeyguard();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
Также вам нужно добавить следующие разрешения:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Итак, после этого мои тесты теперь разбудят мой телефон, чтобы работать, поэтому мне не нужно стоять на страже и следить за тем, чтобы экран не выключился прямо перед началом тестов.
Я бы предпочел не включать эти разрешения, хотя в моем приложении явно. Я знаю, что с gradle можно сделать разные "ароматы", у которых есть свой собственный манифест андроида, который объединится в основной манифест. Я думал об использовании этого, но я бы предпочел не добавлять вкус именно по этой причине, поскольку это уже использует тип тестовой сборки для запуска. Похоже, что из документации android gradle вы не можете создать AndroidManifest для каталога instrumentTest, поскольку он будет автоматически сгенерирован.
Однако мне было интересно, есть ли другой способ сделать это, не создавая вариант, а затем указывая, что тесты должны запускать этот вариант. Также я не уверен в точном синтаксисе всего этого и думал, что было бы неплохо просто иметь эту информацию на сайте для других, поскольку она, кажется, разбросана.
Наконец, если кто-нибудь знает, как лучше решить проблему пробуждения телефона для тестов, я бы хотел услышать это, поскольку я не большой поклонник этого пути, я пытаюсь.