/** * @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 accounts = TestDataFactory.createAccounts(200, true); } // ─── Positive Tests ─────────────────────────────────────────────────── @isTest static void shouldPerformExpectedBehavior_WhenValidInput() { // Given: Setup specific test state // List 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 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 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 results = {ClassUnderTest}.methodUnderTest(new List()); 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 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 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 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 }