公開資料は再現可能な実装パターンを中心にします。再配布制限のあるSDK、ファームウェア、メーカー資料は承認済み経路に限定します。
方法、バージョン、制約を伴う比較可能な根拠。
- 正規化されたキャプチャ イベントを使用するドメイン関数。
- プロジェクト内ですでに実行されているテスト フレームワーク。
- 重複した値、空の値、無効な値の場合に何が起こるべきかについての明確なルール。
公開基準
版管理された根拠とともにAndroid業務連携を構築。
公開資料は再現可能な実装パターンを中心にします。再配布制限のある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リファレンス、ファームウェア、ソースコード例は、再配布許可と対応範囲を記録してから公開します。
ハードウェアのセットアップを小規模なアダプターのスモーク テストに移動し、偽のポートでドメイン ルールを維持します。
明示的な重複イベントを追加し、状態遷移を 1 回アサートします。
正規化境界で拒否し、ユーザーが回復可能な状態を公開します。
証拠ステータス
方法、バージョン、制約を伴う比較可能な根拠。
- 01
すべての CI ビルドで偽のアダプター テストを実行します。
- 02
有効なケース、空のケース、重複したケース、サイズ超過のケース、および輸送失敗のケースをカバーします。
- 03
デバイス固有のアダプターは 1 つのパッケージ境界の内側に配置してください。
- 04
承認されたベースラインごとに個別に物理デバイスの煙テストを 1 つ実行します。
資料
SDK・APIパターン
ベンダーのバイナリ、APIリファレンス、ファームウェア、ソースコード例は、再配布許可と対応範囲を記録してから公開します。