Если вы выполните быстрый поиск в Google или даже на форуме flutterdev на Reddit, вы уйдете с пустыми руками. Написание набора тестов является секретом только из-за того, что оно неясно, поскольку находится глубоко в самом Flutter SDK. Не ждите до собеседования, чтобы узнать об этом.
Мы пишем наборы тестов, чтобы гарантировать, что поведение компонента пользовательского интерфейса согласуется с нашим видением того, как мы хотим, чтобы дизайн приложения выглядел и вел себя. Но, если способ его построения не на человеческих родных языках; тогда требуется больше когнитивных способностей, чтобы понять, что означает прохождение или неудача теста для тех, кто пишет отдельные тесты, которые добавляют к конкретному набору тестов.
Это проблема, как обычно, когда команды разработчиков из одного человека еще раз смотрят на код через месяц, и они забыли эту последовательность кода, или, в случае расширяющейся команды, обычно другой член команды пишет отдельные модульные тесты для расширения. наборы тестов.
Моя благодарность команде разработчиков приложений Flutter на eBay за то, что они копались в SDK flutter и за то, как команда Flutter тестирует Flutter SDK, чтобы найти способы его расширения, чтобы упростить написание набора тестов Flutter.
Плагины флаттера, которые мы будем использовать на eBay, - это плагины give_when_then и page_object. Вы устанавливаете их:
dev_dependencies:
given_when_then: ^0.2.0
page_object: ^0.2.0
https://github.com/fredgrott/flutter_rose_glasses
И этот конкретный пример репо - репо fproject_layout:
https://github.com/fredgrott/fproject_layout
Я покажу вам один пример использования плагина give_when_then, а именно тест для app_bar:
В наборе тестов всегда будут две части: жгут и тест. И он настраивается через расширения, так что когда мы составляем наш модульный тест, он почти читается как настоящий человеческий английский:
group('appbar test', () {
testWidgets('AppBar Title is FProject Layout', harness((given, when, then) async {
await given.myAppExists();
await when.appBarFound();
await then.appBarTitleIs();
}));
});
Теперь перейдем к использованию page_object.
Объект страницы просто дает лучший способ захвата компонентов на экране путем сопоставления и поиска. Давайте возьмем в качестве примера экран домашней страницы приложения счетчика. Обычно у нас есть экран домашней страницы, например:
Создаем набор страниц объектов в нашей тестовой папке:
Тогда наш набор тестов для домашней страницы станет:
Полный исходный код, включая приложение счетчика флаттера, которое является всего лишь шаблоном приложения флаттера с моими собственными изменениями, находится по адресу:
https://github.com/fredgrott/fproject_layout
О, и вы думали, что мы закончили! Я что-то подобрала тебе прямо под нос! Давайте еще раз посмотрим на наш тест панели приложений:
Вы видите тест BDD! И нам не пришлось связываться с другим языком! Другими словами, мы включаем как BDD, так и приемочное тестирование в каждый набор тестов, который мы пишем таким образом!
Хотя, да, Google меняет ситуацию, чтобы мы могли проводить интегрированное инструментальное тестирование на CI-серверах, это хорошо, но у него есть и другие полезные преимущества. Мы можем повторно использовать наши методы и стратегии тестирования как в тестировании виджетов, так и в инструментальном тестировании.
Мы также можем повторно использовать методы использования расширений dart для создания читаемых сценариев использования BDD прямо в наших тестах виджетов, используя плагины eBay give_when_then и page_object.
очки с трепещущими розами https://github.com/fredgrott/flutter_rose_glasses
fproject_layout https://github.com/fredgrott/fproject_layout
Общие ресурсы по Flutter и Dart:
Ресурсы сообщества Flutter https://flutter.dev/community
SDK Flutter https://flutter.dev/docs/get-started/install
IDE Android Studio https://developer.android.com/studio
Код MS Visual Studio https://code.visualstudio.com/
Документы Flutter https://flutter.dev/docs
Документы Dart https://dart.dev/guides
Лаборатория тестирования мобильных устройств Google Firebase https://firebase.google.com/docs/test-lab
Google LLC владеет следующими товарными знаками; Дарт, Флаттер, Android, Робото, Ното. Apple Inc владеет товарными знаками iOS, MacOSX, Swift и Objective-C. Apple Inc владеет товарными знаками на свои шрифты SF Pro, Sf Compact, SF mono и New York. JetBeans Inc владеет товарными знаками JetBeans, IntelliJ и Kotlin. Oracle Inc владеет товарным знаком Java. Microsoft Inc владеет товарными знаками MS Windows OS и Powershell. Gradle является товарным знаком Gradle Inc. Git Project владеет товарным знаком Git. Linux Foundation владеет товарным знаком Linux. Собственные товарные знаки OEM-производителей смартфонов на названия продуктов для мобильных телефонов. В меру своих возможностей я следую указаниям в отношении бренда и использования вышеупомянутых товарных знаков.
Я сумасшедший SOB, который, как бывший разработчик мобильных устройств для Android, начинает писать о разработке, дизайне и жизни мобильных приложений Flutter (см. Eff COVID-19 и GOP ). Достигну ли я ключевой отметки в один миллион средних зрителей в месяц? Устройтесь поудобнее и смотрите. Найдите меня на таких социальных платформах, как Xing , LinkedIN , Keybase и Twitter .
Карьера в корне меняет правила игры Из всего, что мы делаем в Lyft, постановка пикапов между пассажирами и водителями — одна из самых сложных и важных. Успех этой хореографии зависит от того, насколько хорошо Lyft справляется со многими задачами, но важно просто держать райдеров в курсе.
Пошаговое руководство по переходу с Dagger на Hilt в многомодульном проекте. Структура проекта Для визуализации проекта он содержит несколько модулей NetworkModule, StorageModule, CommonModule, FeatureModule и т. д.
Мы часто обнаруживаем, что изо всех сил пытаемся реализовать то, что, как мы знаем, полезно для нас. От того, чтобы сказать значимому другому, что мы любим его, до того, чтобы помнить, что нужно говорить как пират, всегда будут те, кто утверждает, что день, неделя или месяц событий не нужны, потому что они уже делают эти вещи.
В сегодняшнем быстро развивающемся бизнес-ландшафте концепция гибридной и удаленной работы приобрела беспрецедентный импульс. Поскольку компании продолжают приспосабливаться к меняющимся потребностям и ожиданиям своих сотрудников, эксперты из разных областей собрались вместе, чтобы обсудить преимущества, проблемы и будущее этого преобразующего способа работы.
Элисон Ли, управляющий советник по связям с правительством Процесс ежегодных ассигнований федерального правительства занимает центральное место в наших усилиях по финансированию удаления двуокиси углерода (CDR). Каждый год Carbon180 направляет запросы в различные офисы Конгресса, чтобы помочь определить, куда пойдут доллары в следующем году.
(Предупреждение — это сатира, предназначенная для радостной подрывной деятельности — определенно не для детей) Вы видели, как ваши мама и папа прячутся на кухне и курят эти вонючие сигареты. Они говорят вам.