@isTest y la clase de test
Un test es código que ejecuta tu código y comprueba el resultado. Vive en su propia clase, marcada con @isTest, no toca los datos reales y es lo que Salesforce exige antes de dejarte desplegar.
✓ En esta sub-lección
- 01Escribir una clase de test con @isTest y un método de test.
- 02Explicar qué es la cobertura y por qué se exige el 75 %.
- 03Ejecutar un test y leer su resultado en tu Developer Org.
La nutria: ¿Te acuerdas? · Repaso del Módulo 9
¿Qué hace falta en tu org para poder desplegar un trigger o una clase a producción?
El puente con el ERP de los Módulos 8 y 9 funciona en la sandbox. Llega el día de desplegarlo y Salesforce lo rechaza: «Average test coverage across all Apex Classes and Triggers is 0%, at least 75% test coverage is required». Nadie escribió un solo test. Este módulo lo arregla, pieza a pieza.
La forma de un test
@isTest
private class RenewalRowTest {
@isTest
static void parsesAValidAmount() {
Decimal amount = RenewalRow.parseAmount('12500.00'); // 1 · ejecuta tu código
Assert.areEqual(12500.00, amount); // 2 · comprueba el resultado
}
}- @isTest encima de la clase: es código de prueba, no se ejecuta en producción ni cuenta para el límite de tamaño de código de la org.
- private: nadie más necesita llamar a un test. Y el nombre suele ser el de la clase probada más Test.
- @isTest encima de cada método static void sin parámetros: cada uno es un caso de prueba, y su nombre dice qué comprueba.
TESTS QUE EJECUTAS
- if (String.isBlank(raw)) {
- throw new RenewalImportException('Importe vacío');
- Decimal amount;
- try { amount = Decimal.valueOf(raw); }
- catch (TypeException e) { throw new RenewalImportException('…', e); }
- if (amount <= 0) {
- throw new RenewalImportException('Importe no positivo: ' + raw);
- return amount;
63 % de cobertura: por debajo del 75 %. Las líneas en rojo nunca se han ejecutado en un test.
La cobertura: qué líneas se ejecutaron
Al pasar los tests, Salesforce apunta qué líneas de tu código se ejecutaron: eso es la . Para desplegar hace falta al menos un 75 % en conjunto, y cada trigger tiene que ejecutarse alguna vez. Pero ojo: la cobertura solo dice qué líneas corrieron, no si hicieron lo correcto. Eso lo dice el Assert, y es la lección 3.
La nutria: Tu UAT, pero automática
La nutria: ¿Y por qué no un Flow? Flow también tiene tests… opcionales