Salesforce
Apex Testing
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');