Настроив этот тест, вы сможете быстро создать прототип флаттер-приложения. И да, он по-прежнему использует 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://www.xing.com/profile/Fred_Grott/cv
https://www.linkedin.com/in/fredgrottstartupfluttermobileappdesigner/
Творить и творить для жизни….