Технический контент является основой RuggedLayer. Публичные материалы показывают воспроизводимые шаблоны интерфейсов и данные, нужные для подготовки действующего приложения к внедрению; ограниченные SDK распространяются только по разрешенным каналам.
Сопоставимые данные об устройствах с методикой, версией и ограничениями.
- Функция домена, потребляющая нормализованное событие захвата.
- Система тестирования, уже запущенная в проекте.
- Четкое правило того, что должно происходить с дублирующими, пустыми и недействительными значениями.
Стандарт публикации
Создавайте и проверяйте Android-интеграции на основе версионируемых данных.
Технический контент является основой RuggedLayer. Публичные материалы показывают воспроизводимые шаблоны интерфейсов и данные, нужные для подготовки действующего приложения к внедрению; ограниченные SDK распространяются только по разрешенным каналам.
- 01
В зависимости от вашего порта, а не класса устройства
Приемный рабочий процесс должен знать о CaptureEvent и CapturePort. Он не должен импортировать менеджер сканера, транслировать постоянный или тип модели.
- 02
Детерминированные события
Дайте поддельному адаптеру явные методы для действительного сканирования, дублированного сканирования, пустого значения и отказа. Тесты становятся читаемыми, когда вход описывает сценарий оператора.
- 03
Утверждение бизнес-результатов
Проверяйте движение акций, сообщения валидации и обработку дубликатов. Не утверждайте, что отзыв поставщика был вызван из бизнес-теста; это относится к тесту аппаратного адаптера.
- 04
Держите аппаратный тест маленьким
Когда устройство доступно, запустите целенаправленный тест дыма для открытия, запуска, декодирования и закрытия. Большой набор рабочих процессов должен оставаться быстрым и без устройства.
Примеры приложений / Kotlin
Шаблоны SDK и API
Оригинальный тест-двойник безопасен для публикации, потому что он не включает класс поставщика или двоичный код.
class FakeCapturePort : CapturePort {
private var listener: ((CaptureEvent) -> Unit)? = null
override fun open() = Unit
override fun start() = Unit
override fun stop() = Unit
override fun close() = Unit
override fun setListener(listener: (CaptureEvent) -> Unit) {
this.listener = listener
}
fun emit(value: String, symbology: String? = "test") {
listener?.invoke(CaptureEvent(value, symbology, Instant.now()))
}
}
@Test
fun receiving_a_valid_barcode_updates_stock() {
val scanner = FakeCapturePort()
val workflow = ReceivingWorkflow(scanner)
workflow.start()
scanner.emit("SKU-001")
assertEquals(ReceivingState.Accepted("SKU-001"), workflow.state)
}Распространение SDK
Условия публикации
Бинарные файлы, API, прошивки и примеры производителя публикуются только после фиксации разрешения и поддерживаемой области.
Переместите настройку оборудования в небольшой адаптер дымового теста и сохраните правила домена на поддельном порту.
Добавьте явное дублирующее событие и утвердите переход состояния один раз.
Отклонить на границе нормализации и обнажить восстанавливаемое пользователем состояние.
Как читать справочные данные
Сопоставимые данные об устройствах с методикой, версией и ограничениями.
- 01
Проведите поддельные тесты на каждый адаптер CI строить.
- 02
Прикрыть действительные, пустые, дублирующие, негабаритные и транспортные случаи.
- 03
Держите адаптер для конкретного устройства за одной границей пакета.
- 04
Проведите один тест дыма на физическом устройстве отдельно для каждого утвержденного базового уровня.
Материалы
Шаблоны SDK и API
Бинарные файлы, API, прошивки и примеры производителя публикуются только после фиксации разрешения и поддерживаемой области.