In Spring ’15 release Salesforce has introduced new @testSetup
annotation for Test class method. @testSetup
annotation defined methods are used for creating common test records, and that records are available for all test methods in the class.
@testSetup
methods create common test data easily and efficiently, and reduce test execution times especially when we are working with many records.
Example:
@iSTest private class AccountControllerTest { //Test Setup Method @testsetup static void createAccount() { Account acc = new Account(); acc.Name = 'Salesforce'; insert acc; } //Test Method public static testMethod void test() { System.assertEquals(1, [SELECT COUNT() FROM Account Where Name = 'Salesforce']); } }
Considerations:
- Records created by @testSetup method are available to all test methods in the test class.
- @testSetup methods are executed first in the test class before any test methods.
- One Test class can have only one @testSetup method. If multiple @testSetup method is written in a Test class then sequence of execution of those methods are not guaranteed.
- If the test class or a test method has access to organization data by using the @isTest(SeeAllData=true) annotation, test setup methods aren’t supported in this class.
- If any error occurss during the execution in @testSetup method, then entire test class fails.
- The data created by @testSetup methods will be rolled back after the completly execution of the test class.
- If a test setup method calls a non-test method of another class, no code coverage is calculated for the non-test method.