Buscar..


Afirmar métodos

static TestMethod void DmlTest() {
    List<Contact> allContacts = [SELECT Id FROM Contact];
    System.assert(allContacts.isEmpty());

    Contact testContact = new Contact(FirstName = 'John', LastName = 'Doe');
    insert testContact;
    allContacts = [SELECT Id FROM Contact];
    System.assertNotEquals(0, allContacts.size(), 'Optional message in case of failure');
    
    delete allContacts;
    allContacts = [SELECT Id FROM Contact];
    System.assertEquals(0, allContacts.size());
}

Clase de prueba basica

Esta clase de prueba IsBlank(...) el IsBlank(...) de SomeClass . A continuación se muestra el ejemplo de SomeClass . Esta clase solo tiene un método static básico, pero no podrá implementarlo en una instancia de producción para usarlo hasta que haya alcanzado el umbral de cobertura del código.

public class SomeClass {

    public static Boolean IsBlank(String someData) {
        if (someData == null) {
            return true;
        } else if (someData == '') {
            return true; 
        } else {
            return false;
        }
    }

}

Como se puede ver, este método es simplemente una instrucción if con tres ramas. Para escribir una clase de prueba efectiva, debemos cubrir cada rama con código y usar las System.assertEquals(...) para verificar que se recibió la información correcta de IsBlank(...) .

@isTest 
public class SomeClass_test {

    @isTest 
    public static void SomeClass_IsBlank_test() {

        String testData;

        // SomeClass.IsBlank() returns true for Null values
        System.assertEquals(true, SomeClass.IsBlank(testData)); 

        testData = '';
        
        // SomeClass.IsBlank() returns true for empty strings
        System.assertEquals(true, SomeClass.IsBlank(testData)); 

        testData = 'someData';

        // SomeClass.IsBlank() returns false when testData is neither
        // an empty string nor Null
        System.assertEquals(false, SomeClass.IsBlank(testData)); 

    }

}

Utilizando testSetup

Puede usar un método anotado con @testSetup para escribir el código que se habrá ejecutado antes de cada ejecución de prueba:

public class AccountService {
  public static Account fetchAccount() {
    return [ SELECT Id, Name FROM Account LIMIT 1 ];
  }
}
@isTest
public class AccountServiceTest {
  private static final String TEST_ACCOUNT_NAME = 'My Test Account';

  @testSetup
  public static void setUpAccountData() {
    Account a = new Account(Name = TEST_ACCOUNT_NAME);
  }

  @isTest
  public static void testFetchAccount() {
    Account a = AccountService.fetchAccount();
    System.assertNotEquals(null, a, 'Account should not be null');
    System.assertEquals(TEST_ACCOUNT_NAME, a.Name, 'Account name should be correct');
  }
}

Utilizando bloques estáticos

Si bien puede usar la anotación @testSetup para designar un método que se ejecutará antes de que se ejecuten las pruebas, este método generalmente solo se ejecutará una vez. Si necesita que el código se ejecute antes de cada prueba, puede usar un bloque static :

@isTest
public class MyTest {
  static {
    // code here will be run before each test is executed
  }
}

Metodos de afirmacion

System.assert se puede usar para verificar que una expresión booleana se evalúe como verdadera:

System.assert(Service.isActive());
System.assert(!Service.getItems().isEmpty(), 'items should not be empty');

System.assertEquals y System.assertNotEquals se pueden usar para verificar la igualdad de dos valores. El valor esperado se pasa como el primer parámetro, y el valor bajo prueba se pasa como el segundo parámetro.

System.assertEquals(4, Service.getItems().size());
System.assertNotEquals(null, Service.getItems());

// failure messages are optional:
System.assertEquals(true, Service.doWork(), 'doWork should return true');
System.assertNotEquals(null, Service.doWork(), 'doWork should not be null');


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow