Skip to content

2.5 «Espresso. Автоматизация тестирования Android»

Notifications You must be signed in to change notification settings

levvolkov/Espresso

Repository files navigation

Домашнее задание к занятию «2.5. Espresso»


Сделано:

Задание. Реализация теста на проверку главного экрана

  1. Склонирован и запущен тестовый проект в Android Studio.

  2. Добавлены необходимые зависимости в файл /app/build.gradle в блок dependencies {:

   testImplementation 'junit:junit:4.13.2' 
   androidTestImplementation 'androidx.test.ext:junit:1.1.3' 
   androidTestImplementation 'androidx.test:rules:1.4.0'
   androidTestImplementation 'androidx.test:runner:1.4.0' 
   androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' 
  1. При возникновении проблем с запуском приложения был разрешен конфликт в структуре проекта (Project Structure) путем обновления следующих версий. Обновления были необходимы для обеспечения совместимости и стабильной работы приложения:
   Android Gradle Plugin Version 7.4.2
   Gradle Version 7.5
  1. Создан новый класс в директории /app/src/androidTest/java/ru/kkuzmichev/simpleappforespresso/.

  2. Добавлено аннотирование @RunWith над именем класса для указания на использование AndroidJUnit в тестах.

   @RunWith(AndroidJUnit4.class)
   public class ...
  1. Задано правило MainActivity внутри класса. Вместо ActivityTestRule использован ActivityScenarioRule, чтобы облегчить управление состоянием активности и улучшить совместимость с новыми версиями Android. Это также позволяет более эффективно тестировать жизненный цикл активности.
   @Rule
   public ActivityScenarioRule<MainActivity> activityRule =
           new ActivityScenarioRule<>(MainActivity.class);
  1. Для написания теста было запущено приложение, после чего проведен анализ иерархии элементов с помощью Layout Inspector, в результате которого был обнаружен элемент с текстом This is home fragment и его ID.

  2. Написан тест, проверяющий, что у найденного ID текст This is home fragment.

  • Вынесен текст кода в отдельную переменную, что улучшит читаемость кода и облегчит его поддержку. Если нужно будет изменить текст в будущем, это можно сделать это в одном месте, а не искать его по всему коду.
   private static final String homeFragmentText = "This is home fragment";

Использование private static final String обеспечит неизменяемость значения, что повысит безопасность кода и уменьшит вероятность ошибок, связанных с изменением текста в разных местах.

  1. Во время попытки запуска теста через консоль в режиме сборщика Gradle была успешно решена проблема с правами доступа к файлу gradlew путем выполнения команды:
   chmod +x ./gradlew
  1. Запущен тест в режиме сборщика Gradle, проверено его успешное завершение.
   ./gradlew connectedAndroidTest
  1. Запущен тест, нажав кнопку запуска возле метода теста, произведен экспорт отчета теста в HTML-файл, отчёт добавлен в issues репозитория.

  2. Для покрытия большинства потребностей добавлен Allure Report

  • Установлен Allure на ПК для требований системы отчетов.
   brew install allure
   allure --version
  • Добавлена необходимая Allure зависимость в файл /app/build.gradle в блок dependencies {:
   androidTestImplementation 'io.qameta.allure:allure-kotlin-android:2.4.0'
  • В тесте в аннотирование @RunWith(AndroidJUnit4.class) над именем класса добавленно Allure и сделан импорт:
   @RunWith(AllureAndroidJUnit4.class)
  • Запущен тест ▶️ проверено его успешное завершение.
  • В Android Studio в разделе Device Explorer по пути data/data/имя_проекта/files найдена и выгружена в проект папка allure-results с генерируемым отчетом.
  • Для запуска отчета в консоли выполнена команда:
   allure serve
  • Скришот отчёта добавлен в issues репозитория.