Robolectric — это стандартная среда модульного тестирования для Android. С Robolectric ваши тесты выполняются в моделируемой среде Android внутри JVM без накладных расходов и нестабильности эмулятора. Робоэлектрические тесты обычно выполняются в 10 раз быстрее, чем тесты на эмуляторах с холодным запуском.
Robolectric поддерживает выполнение модульных тестов для 15 различных версий Android, от Lollipop (уровень API 21) до V (уровень API 35).
Вот пример простого теста, написанного с использованием Robolectric:
@ RunWith ( AndroidJUnit4 . class )
public class MyActivityTest {
@ Test
public void clickingButton_shouldChangeResultsViewText () {
Activity activity = Robolectric . setupActivity ( MyActivity . class );
Button button = ( Button ) activity . findViewById ( R . id . press_me_button );
TextView results = ( TextView ) activity . findViewById ( R . id . results_text_view );
button . performClick ();
assertThat ( results . getText (). toString (), equalTo ( "Testing Android Rocks!" ));
}
}
Для получения дополнительной информации о том, как установить и использовать Robolectric в вашем проекте, расширить его функциональность и присоединиться к сообществу участников, посетите robolectric.org.
Если вы хотите начать новый проект с тестами Robolectric, вы можете обратиться к deckard
(для Maven или Gradle) как к руководству по настройке Android и Robolectric на вашем компьютере.
build.gradle
testImplementation " junit:junit:4.13.2 "
testImplementation " org.robolectric:robolectric:4.14.1 "
Robolectric построен с использованием Gradle. И Android Studio, и IntelliJ могут импортировать файл build.gradle.kts
верхнего уровня и автоматически генерировать из него файлы проекта.
Чтобы запустить Robolectric на вашей машине, ознакомьтесь с этим руководством.
Чтобы получить общий обзор архитектуры Robolectric, посетите robolectric.org.
Robolectric активно развивается в нескольких регионах. Основное местоположение — это репозиторий GitHub, который считается источником достоверного кода Robolectric. Именно здесь происходит вклад более широкого сообщества разработчиков Android. В Google также существует активное дерево разработки Robolectric, в которое вносят вклад сторонние разработчики Android. Наличие внутреннего дерева разработки Robolectric в Google позволяет сторонним разработчикам Android более эффективно вносить свой вклад в Robolectric. Это дерево синхронизируется непосредственно с веткой google
каждый раз, когда происходит изменение с помощью инструмента синхронизации кода Copybara
. Двунаправленные слияния этой ветки и master
ветки происходят регулярно.
Robolectric также используется на платформе Android через проект внешнего репо/robolectric. Вклад в это дерево исходного кода обычно связан с поддержкой новых SDK и развивающимися API-интерфейсами платформы. Изменения из этой ветки передаются во внутреннее дерево Robolectric в Google, которое в конечном итоге распространяется на ветки GitHub.
Несмотря на сложность, эта модель распределенной разработки позволяет разработчикам Android в различных средах использовать и вносить свой вклад в Robolectric, в то же время позволяя изменениям в конечном итоге попасть в общедоступные выпуски Robolectric.
Если вы хотите жить на переднем крае, вы можете попробовать использовать сборку моментальных снимков. Имейте в виду, что снимки представляют собой самые последние изменения на master
и могут содержать ошибки.
build.gradle
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots " }
}
dependencies {
testImplementation " org.robolectric:robolectric:4.15-SNAPSHOT "
}