Настройка JUnit 5 для использования в Android: проблемы и их решения | Статья в сборнике международной научной конференции

Отправьте статью сегодня! Журнал выйдет 28 декабря, печатный экземпляр отправим 1 января.

Опубликовать статью в журнале

Автор:

Рубрика: 1. Информатика и кибернетика

Опубликовано в

IV международная научная конференция «Технические науки: теория и практика» (Казань, ноябрь 2018)

Дата публикации: 23.10.2018

Статья просмотрена: 845 раз

Библиографическое описание:

Денисенко, А. А. Настройка JUnit 5 для использования в Android: проблемы и их решения / А. А. Денисенко. — Текст : непосредственный // Технические науки: теория и практика : материалы IV Междунар. науч. конф. (г. Казань, ноябрь 2018 г.). — Казань : Молодой ученый, 2018. — С. 10-14. — URL: https://moluch.ru/conf/tech/archive/312/14586/ (дата обращения: 19.12.2024).



JUnit 5 официально был выпущен в Июле 2016 года, этот релиз несет в себе достаточно большие изменения. JUnit 4 был стандартом для юнит-тестирования в Android с самого выхода Android на сцену. В этой статье мы рассмотрим некоторые основы фреймворка и настроим его для работы с Android проектом.

Одно из наиболее значимых изменений JUnit 5 — это то, что теперь фреймворк состоит с нескольких компонентов. JUnit Platform — основа платформы, которая позволяет запускать разные тест-фреймворки на JVM. JUnit Jupiter — сердце платформы. Предоставляет новые возможности для создания тестов и разработки собственных расширений. И наконец-то, JUnite Vinatage, который предоставляет поддержку старых тестов, это тестовый фреймворк, на котором можно запускать все JUnit 4 тесты. Эти три компонента и являют собою JUnit 5. На основании вышеописанного, можно сказать, что при всех значительных изменениях платформы, она все еще предоставляет полную работоспособность тестов, написанных на JUnit 4.

Рассмотрим теперь настройку JUnit 5 для операционной системы Android. Наиболее очевидное место чтобы начать — официальная документация (https://junit.org/junit5/docs/current/user-guide), секция 4.2.1 описывает как настроить JUnit 5 для Gradle. Но, если следовать инструкциям и просто добавить Gradle плагин для JUnit 5 сборка проекта не будет работать:

Причиной является то, что JUnit 5 работает с Gradle плагином для Java, который определяет другую иерархию задач (task) чем Android Gradle плагин. Если мы работаем с чистой Java в нашем проекте — данная настройка будет работать без проблем, но, когда мы пробуем запустить юнит-тесты, в Android проекте, возникают проблемы. Так что, чтобы работать с JUnit 5 в Android нам нужен другой плагин. К счастью, уже имеется готовое решение.

Чтобы его использовать, мы должны убрать все что мы только-что добавили в результате настройки. Далее нам нужно добавить необходимые настройки чтобы плагин работал как часть системы:

buildscript {
dependencies {
classpath "de.mannodermaus.gradle.plugins:android-junit5:1.2.0.0"
}
}

apply plugin: "de.mannodermaus.android-junit5"

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'

// (Required) Writing and executing Unit Tests on the JUnit Platform
testImplementation "org.junit.jupiter:junit-jupiter-api:5.2.0"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.2.0"

// (Optional) If you need "Parameterized Tests"
testImplementation "org.junit.jupiter:junit-jupiter-params:5.2.0"

// (Optional) If you also have JUnit 4-based tests
testImplementation "junit:junit:4.12"
testRuntimeOnly "org.junit.vintage:junit-vintage-engine:5.2.0"

testImplementation("org.assertj:assertj-core:3.11.1")
}

Теперь можно использовать JUnit 5 для написания тестов. Стоит заметить, что нам все еще нужно включать зависимость JUnit 4.12 так как test runner Android Studio не будет работать без этого.

Теперь создадим два теста и проверим что тесты работаю. Это будут два «Hello world!» теста, первый на JUnit 4:

Второй будет создан с помощью JUnit 5:

Сейчас единственное отличие, этих двух тестов в выделенной строке.

Теперь мы можем сконфигурировать исполнитель тестов в Android Studio. Нужно выбрать «Edit Configurations…» в выпадающем списке, на панели инструментов:

Создаем конфигурацию Android JUnit:

Если мы запустим данную конфигурацию, мы увидим, что тесты запустились и успешно прошли:

Стоит обратить внимание что тест, который был написан на JUnit 4, выполнился с помощью JUnit Vintage, а написанный с помощью JUnit 5 — на JUnit Jupiter.

Единственная проблема данного подхода возникает при попытке запуска тестов через командную строку:

https://i1.wp.com/blog.stylingandroid.com/wp-content/uploads/2017/02/Commandline-no-Vintage.png?ssl=1

Отчет по выполнению тестов говорит нам что выполнился только один тест, но у нас написано 2 теста. Проблема заключается в том, что только junit-jupiter был найден, для выполнения тестов. Чтобы решить данную проблему нужно добавить junit-vintage в build.gradle файл:

testRuntimeOnly «org.junit.vintage:junit-vintage-engine:5.2.0"

Тесты, как и раньше, работают если запускать с Android Studio, и кроме это теперь их можно запускать через командную строку:

https://i1.wp.com/blog.stylingandroid.com/wp-content/uploads/2017/02/Commandline-with-Vintage.png?ssl=1

В этой статье были изложены основы JUnit 5, рассказано, как настроить Android-проект на использование JUnit 5, описаны проблемы, связанные с этим, и пути их решения.

Литература:

  1. JUnit 5 // JUnit 5. URL: https://junit.org/junit5/ (дата обращения: 20.10.2018).
  2. JUnit 5: Getting Started // Styling Android. URL: https://blog.stylingandroid.com/junit-5-getting-started/ (дата обращения: 20.10.2018).
Основные термины (генерируются автоматически): тест, JVM, выполнение тестов, командная строка, плагин, проблема.

Похожие статьи

Современные подходы к разработке мобильных приложений для платформы Android

Современные технологии управления фоновыми потоками в приложении Android

Использование команд MATLAB — от версии к версии

Рассмотрены отличительные особенности команд пакетов MATLAB 6.5 и MATLAB 7.11 при использовании их как серверов OLE автоматизации при решении за-дач автоматического управления. Приведены конкретные рабочие примеры, которые легко можно повторить.

Вопросы безопасности в Microsoft Office 365

Клонирование жесткого диска: обзор лучших программ

Применение Wolfram Mathematica для анализа работы модели безопасности Take-Grant

В работе представлен пакет расширения, реализованный авторами в рамках си-стемы Mathematica и предназначенный для исследования модели безопасности Take-Grant. Приведено описание функций и команд, используемых в данном пакете.

Основные возможности САПР Altium Designer

Разработка утилиты для проверки настроек интернет-соединения

Hibernate-6: обзор изменений и преимуществ

Современное развитие технологий требует обновления фреймворков. Данная статья анализирует изменения в Hibernate при переходе с 5 на 6 версию. Рассматриваются новые возможности, изменения в API и аннотациях, а также предоставляются практические советы...

Обзор Bluetooth-атак на мобильные устройства, использующих уязвимости алгоритмов шифрования

Похожие статьи

Современные подходы к разработке мобильных приложений для платформы Android

Современные технологии управления фоновыми потоками в приложении Android

Использование команд MATLAB — от версии к версии

Рассмотрены отличительные особенности команд пакетов MATLAB 6.5 и MATLAB 7.11 при использовании их как серверов OLE автоматизации при решении за-дач автоматического управления. Приведены конкретные рабочие примеры, которые легко можно повторить.

Вопросы безопасности в Microsoft Office 365

Клонирование жесткого диска: обзор лучших программ

Применение Wolfram Mathematica для анализа работы модели безопасности Take-Grant

В работе представлен пакет расширения, реализованный авторами в рамках си-стемы Mathematica и предназначенный для исследования модели безопасности Take-Grant. Приведено описание функций и команд, используемых в данном пакете.

Основные возможности САПР Altium Designer

Разработка утилиты для проверки настроек интернет-соединения

Hibernate-6: обзор изменений и преимуществ

Современное развитие технологий требует обновления фреймворков. Данная статья анализирует изменения в Hibernate при переходе с 5 на 6 версию. Рассматриваются новые возможности, изменения в API и аннотациях, а также предоставляются практические советы...

Обзор Bluetooth-атак на мобильные устройства, использующих уязвимости алгоритмов шифрования