afv-library/skills/generating-apex-test/assets/test-class-template.cls

94 lines
3.2 KiB
OpenEdge ABL

/**
* Test class for {ClassUnderTest}.
* Tests bulk operations (251+ records), positive/negative paths,
* and exception handling.
*/
@isTest
private class {ClassUnderTest}Test {
@TestSetup
static void setupTestData() {
List<Account> accounts = TestDataFactory.createAccounts(251, true);
}
// Positive Tests
@isTest
static void shouldPerformExpectedBehavior_WhenValidInput() {
// Given
List<Account> accounts = [SELECT Id, Name FROM Account];
// When
Test.startTest();
// {ClassUnderTest}.methodUnderTest(params);
Test.stopTest();
// Then
// Assert.areEqual(expected, actual, 'Descriptive failure message');
}
@isTest
static void shouldHandleBulkRecords_WhenProcessing251() {
// Given
List<Account> accounts = [SELECT Id FROM Account];
Assert.areEqual(251, accounts.size(), 'Should have 251 test records');
// When
Test.startTest();
// {ClassUnderTest}.bulkMethod(accounts);
Test.stopTest();
// Then
// List<Account> results = [SELECT Id, Status__c FROM Account];
// for (Account acc : results) {
// Assert.areEqual('Processed', acc.Status__c, 'All records should be processed');
// }
}
// Negative Tests
@isTest
static void shouldThrowException_WhenNullInput() {
Test.startTest();
try {
// {ClassUnderTest}.methodUnderTest(null);
Assert.fail('Expected exception for null input');
} catch (MyCustomException e) {
Assert.isTrue(e.getMessage().contains('cannot be null'),
'Exception message should mention null input');
}
Test.stopTest();
}
@isTest
static void shouldReturnEmpty_WhenEmptyInput() {
Test.startTest();
// List<SObject> results = {ClassUnderTest}.methodUnderTest(new List<Id>());
Test.stopTest();
// Assert.isTrue(results.isEmpty(), 'Should return empty list for empty input');
}
// Edge Case Tests
@isTest
static void shouldHandleMixedRecords_WhenSomeQualify() {
// Given
List<Account> accounts = [SELECT Id, Status__c FROM Account];
Integer half = accounts.size() / 2;
// for (Integer i = 0; i < half; i++) {
// accounts[i].Status__c = 'Qualifying';
// }
// update accounts;
// When
Test.startTest();
// {ClassUnderTest}.conditionalMethod(accounts);
Test.stopTest();
// Then
// List<Account> qualifying = [SELECT Id FROM Account WHERE Processed__c = true];
// Assert.areEqual(half, qualifying.size(), 'Only qualifying records should be processed');
}
}