
Production: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t2x000003kFMj
Sandboxes: https://test.salesforce.com/packaging/installPackage.apexp?p0=04t2x000003kFMj
I have just modified the way to generate the test methods to fit my need.
- Chang: the way it generate recordTypeId; using schema to get the Id of record type.createNewTestObject.RecordTypeId = Schema.SObjectType.Test_Object__c.getRecordTypeInfosByName().get(‘Tada’).getRecordTypeId();
- Chang: The generated methods will take parameters and assign the referenced record with Id:
public static Test_Object__c createTestObjectPSYAA5(Contact createWBCDFContactrw7AAAQ)
createNewTestObject.Contact__c = createWBCDFContactrw7AAAQ.Id ; - Add: To support new field type Time.
In Salesforce Development Lifecycle, Writing Test Classes is a crucial part. It is an easy step if the data involve just a few simple records without any complex nested relationship. However, when you are engaged in an ORG with very complex multiple level relationships and a considerable number of fields.
There is some package that helps Salesforce Devs to generate test classes/methods with random values. However, I’m not aware of any other package to create multiple methods using existing data that has already existed in the ORG.
With the Generate DataFactory, Devs can generate series of test methods using the deepest record in a relationship. It also generates all the required fields using actual records, which Devs use for testing their solution.
Take a look at this model:

Devs have a deep relationship with 5 levels of references. Each of the reference is required field for example. Therefore, Devs will have to write the generate for these 5 objects. So with Generate Datafactory, Devs can just copy the id of E to the App or navigate to record E with LWC setup; All 5 of records will be generated in the order from A -> E in form of Method.
How To Use:
- Install the package with the links in this post. Production/Developer Environment uses Production(login) link; Sandboxes use Sandbox(test) link.
- Navigate to Generate Data Factory App

- Copy record id to Id field then clicks generate.

- Copy the methods to your data factory class
Devs can also drag the LWC to a record layout to generate directly from the record.



Example Result with one click:
public static Account createAccountu6IAAQ(){
Account createNewAccount = new Account();
createNewAccount.Name = 'Dickenson plc' ;
createNewAccount.Type = 'Customer - Channel' ;
createNewAccount.BillingStreet = '1301 Hoch Drive' ;
createNewAccount.BillingCity = 'Lawrence' ;
createNewAccount.BillingState = 'KS' ;
createNewAccount.BillingPostalCode = '66045' ;
createNewAccount.BillingCountry = 'USA' ;
createNewAccount.ShippingStreet = '1301 Hoch Drive' ;
createNewAccount.ShippingCity = 'Lawrence' ;
createNewAccount.ShippingState = 'KS' ;
createNewAccount.ShippingPostalCode = '66045' ;
createNewAccount.ShippingCountry = 'USA' ;
createNewAccount.Phone = '(785) 241-6200' ;
createNewAccount.Fax = '(785) 241-6201' ;
createNewAccount.AccountNumber = 'CC634267' ;
createNewAccount.Website = 'dickenson-consulting.com' ;
createNewAccount.Sic = '6752' ;
createNewAccount.Industry = 'Consulting' ;
createNewAccount.AnnualRevenue = 50000000 ;
createNewAccount.NumberOfEmployees = 120 ;
createNewAccount.Ownership = 'Private' ;
createNewAccount.CleanStatus = 'Pending' ;
createNewAccount.WBCDF__CustomerPriority__c = 'Low' ;
createNewAccount.WBCDF__SLA__c = 'Bronze' ;
createNewAccount.WBCDF__Active__c = 'Yes' ;
createNewAccount.WBCDF__NumberofLocations__c = 2 ;
createNewAccount.WBCDF__UpsellOpportunity__c = 'No' ;
createNewAccount.WBCDF__SLASerialNumber__c = '7425' ;
createNewAccount.WBCDF__SLAExpirationDate__c = Date.newInstance(2020, 12, 16);
insert createNewAccount;
return createNewAccount;
}
public static Account createAccountu6JAAQ(){
Account createNewAccount = new Account();
createNewAccount.Name = 'Grand Hotels & Resorts Ltd' ;
createNewAccount.Type = 'Customer - Direct' ;
createNewAccount.BillingStreet = '2334 N. Michigan Avenue, Suite 1500\nChicago, IL 60601, USA' ;
createNewAccount.BillingCity = 'Chicago' ;
createNewAccount.BillingState = 'IL' ;
createNewAccount.ShippingStreet = '2334 N. Michigan Avenue, Suite 1500\nChicago, IL 60601, USA' ;
createNewAccount.Phone = '(312) 596-1000' ;
createNewAccount.Fax = '(312) 596-1500' ;
createNewAccount.AccountNumber = 'CD439877' ;
createNewAccount.Website = 'www.grandhotels.com' ;
createNewAccount.Sic = '2268' ;
createNewAccount.Industry = 'Hospitality' ;
createNewAccount.AnnualRevenue = 500000000 ;
createNewAccount.NumberOfEmployees = 5600 ;
createNewAccount.Ownership = 'Public' ;
createNewAccount.TickerSymbol = 'GHTL' ;
createNewAccount.Description = 'Chain of hotels and resorts across the US, UK, Eastern Europe, Japan, and SE Asia.' ;
createNewAccount.Rating = 'Warm' ;
createNewAccount.CleanStatus = 'Pending' ;
createNewAccount.WBCDF__CustomerPriority__c = 'High' ;
createNewAccount.WBCDF__SLA__c = 'Gold' ;
createNewAccount.WBCDF__Active__c = 'Yes' ;
createNewAccount.WBCDF__NumberofLocations__c = 57 ;
createNewAccount.WBCDF__UpsellOpportunity__c = 'Yes' ;
createNewAccount.WBCDF__SLASerialNumber__c = '5572' ;
createNewAccount.WBCDF__SLAExpirationDate__c = Date.newInstance(2020, 12, 16);
insert createNewAccount;
return createNewAccount;
}
public static Contact createReportsTow7BAAQ(Account createAccountu6JAAQ){
Contact createNewReportsTo = new Contact();
createNewReportsTo.AccountId = createAccountu6JAAQ.Id ;
createNewReportsTo.LastName = 'Barr' ;
createNewReportsTo.FirstName = 'Tim' ;
createNewReportsTo.Salutation = 'Mr.' ;
createNewReportsTo.MailingStreet = '2335 N. Michigan Avenue, Suite 1500\nChicago, IL 60601, USA' ;
createNewReportsTo.Phone = '(312) 596-1000' ;
createNewReportsTo.Fax = '(312) 596-1500' ;
createNewReportsTo.MobilePhone = '(312) 596-1230' ;
createNewReportsTo.Email = 'barr_tim@grandhotels.com' ;
createNewReportsTo.Title = 'SVP, Administration and Finance' ;
createNewReportsTo.Department = 'Finance' ;
createNewReportsTo.LeadSource = 'External Referral' ;
createNewReportsTo.Birthdate = Date.newInstance(1953, 12, 28);
createNewReportsTo.CleanStatus = 'Pending' ;
createNewReportsTo.WBCDF__Level__c = 'Secondary' ;
createNewReportsTo.WBCDF__Languages__c = 'English' ;
insert createNewReportsTo;
return createNewReportsTo;
}
public static Account createWBCDFAccountAntoherru6HAAQ(){
Account createNewWBCDFAccountAntoherr = new Account();
createNewWBCDFAccountAntoherr.Name = 'Pyramid Construction Inc.' ;
createNewWBCDFAccountAntoherr.Type = 'Customer - Channel' ;
createNewWBCDFAccountAntoherr.BillingStreet = '2 Place Jussieu' ;
createNewWBCDFAccountAntoherr.BillingCity = 'Paris' ;
createNewWBCDFAccountAntoherr.BillingPostalCode = '75251' ;
createNewWBCDFAccountAntoherr.BillingCountry = 'France' ;
createNewWBCDFAccountAntoherr.ShippingStreet = '2 Place Jussieu' ;
createNewWBCDFAccountAntoherr.ShippingCity = 'Paris' ;
createNewWBCDFAccountAntoherr.ShippingPostalCode = '75251' ;
createNewWBCDFAccountAntoherr.ShippingCountry = 'France' ;
createNewWBCDFAccountAntoherr.Phone = '(014) 427-4427' ;
createNewWBCDFAccountAntoherr.Fax = '(014) 427-4428' ;
createNewWBCDFAccountAntoherr.AccountNumber = 'CC213425' ;
createNewWBCDFAccountAntoherr.Website = 'www.pyramid.com' ;
createNewWBCDFAccountAntoherr.Sic = '4253' ;
createNewWBCDFAccountAntoherr.Industry = 'Construction' ;
createNewWBCDFAccountAntoherr.AnnualRevenue = 950000000 ;
createNewWBCDFAccountAntoherr.NumberOfEmployees = 2680 ;
createNewWBCDFAccountAntoherr.Ownership = 'Public' ;
createNewWBCDFAccountAntoherr.TickerSymbol = 'PYR' ;
createNewWBCDFAccountAntoherr.CleanStatus = 'Pending' ;
createNewWBCDFAccountAntoherr.WBCDF__SLA__c = 'Silver' ;
createNewWBCDFAccountAntoherr.WBCDF__Active__c = 'Yes' ;
createNewWBCDFAccountAntoherr.WBCDF__NumberofLocations__c = 17 ;
createNewWBCDFAccountAntoherr.WBCDF__UpsellOpportunity__c = 'Maybe' ;
createNewWBCDFAccountAntoherr.WBCDF__SLASerialNumber__c = '9840' ;
createNewWBCDFAccountAntoherr.WBCDF__SLAExpirationDate__c = Date.newInstance(2020, 12, 16);
insert createNewWBCDFAccountAntoherr;
return createNewWBCDFAccountAntoherr;
}
public static Contact createWBCDFContactrw7AAAQ(Account createAccountu6IAAQ, Contact createReportsTow7BAAQ, Account createWBCDFAccountAntoherru6HAAQ){
Contact createNewWBCDFContactr = new Contact();
createNewWBCDFContactr.AccountId = createAccountu6IAAQ.Id ;
createNewWBCDFContactr.LastName = 'Young' ;
createNewWBCDFContactr.FirstName = 'Andy' ;
createNewWBCDFContactr.Salutation = 'Mr' ;
createNewWBCDFContactr.OtherStreet = '1301 Hoch Drive' ;
createNewWBCDFContactr.OtherCity = 'Lawrence' ;
createNewWBCDFContactr.OtherState = 'KS' ;
createNewWBCDFContactr.OtherPostalCode = '66045' ;
createNewWBCDFContactr.OtherCountry = 'USA' ;
createNewWBCDFContactr.MailingStreet = '1301 Hoch Drive' ;
createNewWBCDFContactr.MailingCity = 'Lawrence' ;
createNewWBCDFContactr.MailingState = 'KS' ;
createNewWBCDFContactr.MailingPostalCode = '66045' ;
createNewWBCDFContactr.MailingCountry = 'USA' ;
createNewWBCDFContactr.Phone = '(785) 241-6200' ;
createNewWBCDFContactr.MobilePhone = '(785) 265-5350' ;
createNewWBCDFContactr.ReportsToId = createReportsTow7BAAQ.Id ;
createNewWBCDFContactr.Email = 'a_young@dickenson.com' ;
createNewWBCDFContactr.Title = 'SVP, Operations' ;
createNewWBCDFContactr.Department = 'Internal Operations' ;
createNewWBCDFContactr.LeadSource = 'Purchased List' ;
createNewWBCDFContactr.CleanStatus = 'Pending' ;
createNewWBCDFContactr.WBCDF__Level__c = 'Primary' ;
createNewWBCDFContactr.WBCDF__Languages__c = 'English' ;
createNewWBCDFContactr.WBCDF__AccountAntoher__c = createWBCDFAccountAntoherru6HAAQ.Id ;
createNewWBCDFContactr.WBCDF__TimeField__c = Time.newInstance(9, 0, 0, 0) ;
insert createNewWBCDFContactr;
return createNewWBCDFContactr;
}
public static WBCDF__Test_Object__c createTestObjectPSYAA5(Contact createWBCDFContactrw7AAAQ){
WBCDF__Test_Object__c createNewTestObject = new WBCDF__Test_Object__c();
createNewTestObject.Name = 'asdfasdfasdf' ;
createNewTestObject.RecordTypeId = Schema.SObjectType.WBCDF__Test_Object__c.getRecordTypeInfosByName().get('Tada').getRecordTypeId();
createNewTestObject.WBCDF__check__c = true ;
createNewTestObject.WBCDF__curr__c = 23423 ;
createNewTestObject.WBCDF__date__c = Date.newInstance(2021, 7, 14);
createNewTestObject.WBCDF__dateTime__c = Datetime.newInstance(2021, 7, 9, 11, 45, 0);
createNewTestObject.WBCDF__Email__c = 'asdfasf@gasf.com' ;
createNewTestObject.WBCDF__Geo__Latitude__s = 89.6546550 ;
createNewTestObject.WBCDF__Geo__Longitude__s = 111.1321549 ;
createNewTestObject.WBCDF__number__c = 564.000000 ;
createNewTestObject.WBCDF__percent__c = 0.54 ;
createNewTestObject.WBCDF__phone__c = '65465432165' ;
createNewTestObject.WBCDF__multiplepicklist__c = 'a;v' ;
createNewTestObject.WBCDF__picklist__c = 'a' ;
createNewTestObject.WBCDF__text__c = 'asdfasdf' ;
createNewTestObject.WBCDF__TextArea__c = 'asdfasdf\r\nasdfasdf' ;
createNewTestObject.WBCDF__Time__c = Time.newInstance(7, 15, 0, 0) ;
createNewTestObject.WBCDF__url__c = 'https://www.google.com' ;
createNewTestObject.WBCDF__Contact__c = createWBCDFContactrw7AAAQ.Id ;
insert createNewTestObject;
return createNewTestObject;
}