Prueba y depura tu integración
Esta guía describe las mejores prácticas para depurar tu integración con redsys-tpv-business-lib y ejecutar pruebas automatizadas en dispositivos físicos.
Habilitar logs de depuración (Timber)
El Get Smart SDK integra la biblioteca Timber para facilitar la trazabilidad y la depuración. Para ver los logs internos del SDK en el Logcat de Android Studio, debes “plantar” (plant) un Debug Tree cuando se inicie tu aplicación.
Configuración
Añade la configuración de Timber al método onCreate de tu clase Application.
@HiltAndroidApp
class Application : Application() {
override fun onCreate() {
super.onCreate()
// Plant the debug tree only in Debug builds
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree())
}
}
}Una vez configurado, verás las operaciones detalladas del SDK en el Logcat, lo cual es esencial para diagnosticar un ProtocolError o problemas de conexión.
Ejecutar pruebas en dispositivos físicos
El SDK está diseñado para ser probado utilizando AndroidJUnit4. Debido a que la biblioteca depende de la aplicación Get Smart SDK Payment Service (que interactúa con hardware seguro específico y conexiones de host), no puedes ejecutar estas pruebas en un Android Emulator estándar. Debes utilizar un dispositivo TPV físico.
Requisitos Previos
- TPV Físico: Un dispositivo Android certificado por Redsys/Getnet.
- Instalación del Servicio: La aplicación Get Smart SDK Payment Service debe estar instalada y en ejecución en el dispositivo.
- Test Runner: Tu proyecto debe estar configurado para ejecutar pruebas instrumentadas (androidTest).
Ejemplo: Prueba de inicialización
Esta prueba valida que tu aplicación pueda conectarse correctamente al servicio y recuperar la configuración del terminal.
@Test
fun executeInitTpv() = runTest {
// 1. Get the Context
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
// 2. Instantiate the repository manually (bypassing Dagger for this isolated test)
val initializationRepository = PsaInitializationRepository.newInstance(appContext)
// 3. Execute Initialization
val result = initializationRepository.initTpv()
// 4. Validate results
println("TPV Info: $result")
assert(result is RepositoryResult.Success)
}Ejemplo: Prueba de pago
Esta prueba realiza una transacción real. Utiliza una tarjeta de prueba o un importe nominal (por ejemplo, 1.00€).
@Test
fun executePayment() = runTest {
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
// Initialize first
val initializationRepository = PsaInitializationRepository.newInstance(appContext)
initializationRepository.initTpv()
val paymentRepository = PsaPaymentRepository.newInstance(appContext)
// Execute Payment
val result = paymentRepository.makePayment(
amount = Money(BigDecimal("1.00"), Currency.getInstance("EUR"))
)
println("Payment Result: $result")
// Assert Success
assert(result is RepositoryResult.Success)
}Ejemplo: Prueba de historial de transacciones
Esta prueba valida que puedes recuperar el historial del día actual.
@Test
fun getTransactions() = runTest {
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
val transactionRepository = PsaTransactionRepository.newInstance(appContext)
// Define query range (Today)
val calendar = Calendar.getInstance()
val endDate = calendar.time
calendar.set(Calendar.HOUR_OF_DAY, 0)
val initDate = calendar.time
val result = transactionRepository.getTransactions(
initDate = initDate,
endDate = endDate
)
if (result is RepositoryResult.Success) {
println("Found ${result.data.transactionList.size} transactions")
} else {
println("Error fetching transactions: $result")
}
}Resumen
- Logs: Utiliza
Timber.plant(Timber.DebugTree())para habilitar los logs detallados (verbose) del SDK. - Hardware: Las pruebas deben ejecutarse en hardware físico con el servicio instalado.
- Framework: Utiliza
AndroidJUnit4yrunTestpara el soporte de corrutinas en las pruebas.