Los recursos públicos se centran en patrones reproducibles. SDK, firmware y documentación restringida permanecen en canales de distribución autorizados.
Evidencia comparable con método, versión y límites.
- Una función de dominio que consume un evento de captura normalizado.
- Un marco de prueba que ya se está ejecutando en el proyecto.
- Una regla clara sobre lo que debería suceder con valores duplicados, vacíos e inválidos.
Estándar de publicación
Integre Android empresarial con evidencia versionada.
Los recursos públicos se centran en patrones reproducibles. SDK, firmware y documentación restringida permanecen en canales de distribución autorizados.
- 01
Depende de su puerto, no de la clase de dispositivo
El flujo de trabajo receptor debe conocer CaptureEvent y CapturePort. No debe importar un administrador de escáner, una constante de transmisión o un tipo específico de modelo.
- 02
Emitir eventos deterministas
Proporcione al adaptador falso métodos explícitos para un escaneo válido, un escaneo duplicado, un valor vacío y una falla. Las pruebas se vuelven legibles cuando la entrada describe el escenario del operador.
- 03
Afirmar los resultados comerciales
Consulta de movimiento de stock, mensajes de validación y manejo de duplicados. No afirme que se realizó una devolución de llamada de un proveedor desde una prueba comercial; que pertenece a la prueba del adaptador de hardware.
- 04
Mantenga la prueba de hardware pequeña
Cuando haya un dispositivo disponible, ejecute una prueba de humo enfocada para abrir, activar, decodificar y cerrar. El conjunto de flujos de trabajo más amplio debería seguir siendo rápido y sin dispositivos.
Aplicaciones de ejemplo / Kotlin
Patrones de SDK y API
Prueba original doble. Es seguro publicarlo porque no incluye una clase de proveedor ni un binario.
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)
}Distribución de SDK
Control de publicación
No se publica ningún binario del fabricante, referencia de API, firmware ni ejemplo de código fuente sin registrar el permiso de redistribución y el alcance compatible.
Mueva la configuración del hardware a una pequeña prueba de humo del adaptador y mantenga las reglas de dominio en el puerto falso.
Agregue un evento duplicado explícito y afirme la transición de estado una vez.
Rechazar en el límite de normalización y exponer un estado recuperable por el usuario.
Estados de evidencia
Evidencia comparable con método, versión y límites.
- 01
Ejecute las pruebas de adaptadores falsos en cada compilación CI.
- 02
Cubre casos válidos, vacíos, duplicados, sobredimensionados y fallos de transporte.
- 03
Mantenga el adaptador específico del dispositivo detrás de un límite del paquete.
- 04
Realice una prueba de humo con dispositivo físico por separado para cada línea de base aprobada.
Recursos
Patrones de SDK y API
No se publica ningún binario del fabricante, referencia de API, firmware ni ejemplo de código fuente sin registrar el permiso de redistribución y el alcance compatible.