afv-library/skills/generating-apex-test/assets/test-class-template.cls
Jeff Douglas bba4327cd8
Add Apex & Unit Test Skills (#105)
* added apex and apex test
2026-03-25 14:07:54 -04:00

125 lines
4.9 KiB
OpenEdge ABL

/**
* @description Test class for {ClassUnderTest}.
* Tests bulk operations (200+ records), positive/negative paths,
* and exception handling.
* @author Generated by Apex Test Writer Skill
*/
@isTest
private class {ClassUnderTest}Test {
// Test Setup
@TestSetup
static void setupTestData() {
// Create shared test data using TestDataFactory
// List<Account> accounts = TestDataFactory.createAccounts(200, true);
}
// Positive Tests
@isTest
static void shouldPerformExpectedBehavior_WhenValidInput() {
// Given: Setup specific test state
// List<Account> accounts = [SELECT Id, Name FROM Account];
// When: Execute the code under test
Test.startTest();
// {ClassUnderTest}.methodUnderTest(params);
Test.stopTest();
// Then: Assert expected outcomes
// System.assertEquals(expected, actual, 'Descriptive failure message');
}
@isTest
static void shouldHandleBulkRecords_WhenProcessing200() {
// Given: 200+ records to verify bulkification
// List<Account> accounts = [SELECT Id FROM Account];
// System.assertEquals(200, accounts.size(), 'Should have 200 test records');
// When
Test.startTest();
// {ClassUnderTest}.bulkMethod(accounts);
Test.stopTest();
// Then: Verify all records processed
// List<Account> results = [SELECT Id, Status__c FROM Account];
// for (Account acc : results) {
// System.assertEquals('Processed', acc.Status__c, 'All records should be processed');
// }
}
// Negative Tests
@isTest
static void shouldThrowException_WhenNullInput() {
Boolean exceptionThrown = false;
String exceptionMessage = '';
Test.startTest();
try {
// {ClassUnderTest}.methodUnderTest(null);
} catch (Exception e) {
exceptionThrown = true;
exceptionMessage = e.getMessage();
}
Test.stopTest();
System.assert(exceptionThrown, 'Exception should be thrown for null input');
System.assert(exceptionMessage.contains('cannot be null'),
'Exception message should mention null input');
}
@isTest
static void shouldReturnEmpty_WhenEmptyInput() {
Test.startTest();
// List<SObject> results = {ClassUnderTest}.methodUnderTest(new List<Id>());
Test.stopTest();
// System.assert(results.isEmpty(), 'Should return empty list for empty input');
}
// Edge Case Tests
@isTest
static void shouldHandleMixedRecords_WhenSomeQualify() {
// Given: Mix of qualifying and non-qualifying records
// 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: Only qualifying records should be affected
// List<Account> qualifying = [SELECT Id FROM Account WHERE Processed__c = true];
// System.assertEquals(half, qualifying.size(), 'Only qualifying records should be processed');
}
// Governor Limit Tests
@isTest
static void shouldNotExceedGovernorLimits_WhenBulkProcessing() {
// Given
// List<Account> accounts = [SELECT Id FROM Account];
Test.startTest();
// {ClassUnderTest}.heavyMethod(accounts);
Test.stopTest();
System.assert(Limits.getDmlStatements() < Limits.getLimitDmlStatements(),
'Should not exceed DML statement limit');
System.assert(Limits.getQueries() < Limits.getLimitQueries(),
'Should not exceed SOQL query limit');
}
// Helper Methods
// Add test-specific helper methods here
}