Настроив этот тест, вы сможете быстро создать прототип флаттер-приложения. И да, он по-прежнему использует BDD в менее сложном подходе.

Примечание: Code With Me состоит из двух разных частей. Часть первая — это поваренная книга, в которой рассматриваются отдельные приемы разработки и дизайна приложений на флаттерах. Вторая часть — это настоящие флаттер-приложения в пошаговом формате. Нет, это не стандартное приложение счетчика шаблонов флаттера; но настоящие приложения, такие как приложение git-client, использующее GraphQL.

Репозиторий Code With Me находится по адресу:



Это также часть серии книг по разработке и дизайну приложений Deep Dive Into Flutter, которую я пишу.

Что мы создаем

Что мы строим? Вот как выглядят тесты Goldens:

И вы можете заметить, что он соответствует некоторым вариантам использования. Моя общая идея заключается в том, чтобы использовать Goldens в сочетании с тестированием модулей и виджетов, а также некоторыми библиотеками тестирования для реализации тестирования BDD, не прибегая к тупоголовому инструментальному подходу к интеграционному тестированию.

Почему? Потому что тогда мы получаем хороший прирост скорости и уже имеем BDD без какой-либо боли и без необходимости дважды писать код, чтобы получить пустую выгоду.

Настройка теста

установка, которую я описываю, находится в части кода кулинарной книги со мной в репозитории в подпапке bootsttrap_fulltest.

Начнем с того, что eBay Golden Toolkit требует некоторых вещей, таких как конфигурация dart test с определенным золотым тегом:

Начнем с того, что eBay Golden Toolkit требует некоторых вещей, таких как конфигурация dart test с определенным золотым тегом:

И мы используем Golden Toolkit eBay, потому что в противном случае мы получим глупые вещи из простых золотых инструментов, таких как это:

Вы не только не получаете никаких пользовательских шрифтов, но и не представляете, как на самом деле выглядит ваше приложение.

И мы должны добавить изображения и папку google_fonts в pubspec для плагина eBay Golden Toolkit:

Теперь кое-что, что нам нужно добавить в приложение для поддержки Golden Toolkit.

В приложении добавлены функции для поддержки Golden Toolkit

Здесь мы разделили приложение, вот основное:

Поскольку мы используем Golden Toolkit для помощи в реализации BDD, нам нужен способ захватывать каждый экран с помощью средств поиска Golden Toolkit, чтобы можно было выполнять тесты сценариев использования BDD. Если это не значение ключа, то это должно быть что-то другое; следовательно, основное сообщение и заголовок перемещены в конструктор виджета.

Вот MyApp:

И добавленный ключ и другие элементы в виджете MyHomePage:

А затем с помощью плагина Google Fonts в текстовой теме:

И через цветовые схемы:

И это через ThemeData для светлых и темных тем:

Как мы можем использовать это для реализации BDD?

Реализация тестов, включая BDD

Конфигурация тестов Flutter — это место, где мы настраиваем выполнение тестов Flutter Unit и где мы подключаемся к Golden Toolkit, чтобы включить такие вещи, как загрузка шрифтов:

И наш тест виджета будет выглядеть так:

И обратите внимание, мы также можем имитировать объекты с помощью библиотеки MockTail. Зачем издеваться? Да, во время Goldens и обычного модульного тестирования работает Flutter Engine, поэтому нам нужна эта строка в настройке в заголовке каждого тестового файла:

TestWidgetsFlutterBinding.ensureInitialized();

Но при модульных тестах доступ к Интернету в Flutter Engine отключен, поэтому нам нужно имитировать любой внешний API. Это также причина, по которой мне нужна локальная версия шрифтов, используемых в приложении, чтобы они загружались во время тестирования Goldens.

А Золотые Тесты выглядят так:

Результаты

Код и отчеты о тестировании находятся в этом разделе репозитория code_with_me:

https://github.com/fredgrott/code_with_me/tree/master/cookbook/bootstrap_fulltest

Команды командной строки, которые я выполняю для запуска тестов и получения отчетов, находятся в файле cmdline.txt этого проекта.

Самое приятное то, что вам не нужно изучать другой язык Gherkin (Cucumber), чтобы выполнить BDD, поскольку вы можете сделать это на уровне модульного теста с некоторым просто ярким использованием некоторых дополнительных тестовых библиотек.

Заключение

В следующих статьях я расскажу, как с помощью библиотеки eBay Given When Then сделать методы тестирования более похожими на семантический английский язык, а также как тестировать варианты использования и как в полной мере использовать Golden Toolkit, в том числе как писать новые определения устройств. для использования в тестировании золотых.

И не забывайте, мы вместе будем шаг за шагом создавать настоящие профессиональные флаттер-приложения.

Обо мне, Фред Гротт

Я реформированный разработчик Android, Java, Kotlin и Front-End; и реформированный СДВГ, Дизайнер и Создатель.

Самое смешное в разработке и дизайне интерфейсных приложений заключается в том, что мы программируем людей, а не компьютеры. Это не кодирование или дизайн сам по себе; но кодирование и дизайн стремятся с помощью своих артефактов создать историю, чтобы захватить человека и сказать: сделай это!

Я участвую в нескольких плагинах сообщества Flutter, включая:

Виджеты платформы Flutter

https://pub.dev/packages/flutter_platform_widgets

Ловец

https://pub.dev/packages/catcher

Некоторые из моих полезных статей и руководств:

Высокий OnBoarding https://medium.com/p/awesome-onboarding-6b61a1d077ef

Взвешенный способ установки Flutter SDK https://medium.com/p/an-opinionated-way-to-install-the-flutter-sdk-cca997967192

Шрифты Google, правильный путь https://medium.com/p/google-fonts-the-right-way-72a715f046a3

Простое создание UML

https://medium.com/p/easy-uml-generation-e6e16e5c8b0a

Антипаттерны состояния

https://medium.com/p/anitpatterns-of-state-610dae657ac6

Супер секретная ловушка для флаттера

https://medium.com/geekculture/super-secret-bug-trap-for-flutter-c89d36974b96

Тренировочные колеса для реактивного флаттера

https://medium.com/p/training-wheels-for-reactive-flutter-d1ae35c47787

Мой экспертный проект SetUp, многоуровневая луковая архитектура

https://medium.com/geekculture/my-expert-project-setup-layered-onion-architecture-5dd06e29ee9f

Глубокое погружение в состояние

https://medium.com/geekculture/deep-dive-into-state-34b443da3573

Выбор решения для управления состоянием Flutter https://medium.com/p/choosing-a-flutter-state-management-solution-cccf1b2acf10

Как я научился доверять своему СДВГ

https://medium.com/p/how-i-learned-to-trust-my-adhd-dbf4f80518cc

Идеальная настройка флаттера

https://medium.com/codex/flutter-perfect-setup-c5462b412f78

Настройка Flutter Expert IDE

https://medium.com/geekculture/flutter-expert-ide-set-up-25791ce690c

Файл Globals Dart - это анти-шаблон

https://medium.com/p/globals-dart-file-is-an-antipattern-92975320e30c

Функциональное программирование во Flutter, песочница ваших функций

https://medium.com/p/functional-programming-in-flutter-sandbox-your-functions-ee679d3db7d5

Настройка Expert Catcher для приложений Flutter

https://medium.com/p/expert-catcher-setup-for-flutter-apps-a9ee3a6a9e08

Я создаю код приложения Flutter для серии книг по разработке и дизайну по адресу:

https://github.com/fredgrott/ddi_flutter

Несколько мест, где можно подписаться на меня:

https://keybase.io/fredgrott

https://twitter.com/fredgrott

https://github.com/fredgrott

https://www.xing.com/profile/Fred_Grott/cv

https://www.linkedin.com/in/fredgrottstartupfluttermobileappdesigner/

Творить и творить для жизни….