You need to sign in to do that
Don't have an account?

Developing A Test Class
I've written Apex classes but this is my first time written a test class. I've read a number of sources and watch videos but I don't grasp the foundation to get a test to succesfully cover my code.
Here is my Apex class that works in my full sandbox:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Reference Code for creating records //https://salesforce.stackexchange.com/questions/127889/how-to-automatically-create-a-new-record-in-another-object //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// global class MasterInventoryETL implements Schedulable { global void execute(SchedulableContext sc){ List<Stock_Entry__c > Stock_E = [ SELECT Aisle__c,Item__c,Last_Record__c,Section__c,Shelf__c,Units_in_Stock__c,units_entry__c, Warehouse_name__c,Account_item_owner__c,Effective_Start_Date__c,Effective_End_Date__c, Status__c,Stock_Location__c,Transaction_Entry__c,Transaction_Number__c,Virtual_Bin_Designation__c, Master_Allocation__c,P_O__c,Shipping_ID__c FROM Stock_Entry__c WHERE last_record__c = true ]; List<Master_Inventory__c > snewt = new List <Master_Inventory__c>(); for( Stock_Entry__c se :Stock_E){ Master_Inventory__c snew = new Master_Inventory__c ( units_entry__c = se.units_entry__c , Units_in_Stock__c = se.Units_in_Stock__c, warehouse_name__c = se.warehouse_name__c , Aisle__c = se.Aisle__c, Section__c = se.section__c, Shelf__c = se.Shelf__c, Status__c = se.Status__c, Item__c = se.Item__c, Account_item_owner__c =se.Account_item_owner__c, Effective_Start_Date__c = se.Effective_Start_Date__c, Effective_End_Date__c = se.Effective_End_Date__c, Master_Allocation__c = se.Master_Allocation__c, P_O__c = se.P_O__c, Shipping_ID__c = se.Shipping_ID__c, Stock_Location__c = se.Stock_Location__c, Transaction_Entry__c = se.Transaction_Entry__c, Transaction_Number__c = se.Transaction_Number__c, Virtual_Bin_Designation__c = se.Virtual_Bin_Designation__c, Power_of_One__c = 1 ); snewt.add(snew); } Insert snewt; } }
Here is my test class, I have 3 tests using different sources I've read and none work:
@isTest(SeeAllData=TRUE) Public class MasterInventoryETL_test{ public static String CRON_EXP = '0 0 1 * * ? '; @isTest static void test1() { Stock_Entry__c s = [SELECT Id,pallet_location__c,item__c,aisle__c,shelf__c, Virtual_Bin_Designation__c, section__c,status__c, units_Entry__c FROM Stock_Entry__c WHERE Virtual_Bin_Designation__c LIKE '%Test%' Limit 1]; System.assert(s != null); // Create a test stock entry item based on the queried record. Stock_Entry__c testStockEntry= s.clone(); testStockEntry.Virtual_Bin_Designation__c = 'Test Stock'; insert testStockEntry; // Query the test stock entry that was inserted. Stock_Entry__c testStockEntry2 = [SELECT Id,pallet_location__c,item__c,aisle__c,shelf__c, Virtual_Bin_Designation__c, section__c,status__c, units_Entry__c FROM Stock_Entry__c WHERE Virtual_Bin_Designation__c='Test Stock' LIMIT 1]; System.assert(testStockEntry2 != null); } @isTest static void test2() { Account acc = new Account(); acc.name ='Test'; acc.RecordTypeID = '012j0000000pirBAAQ'; insert acc; Sourcing_Item__c sitem = new Sourcing_Item__c(); sitem.name = 'test mitem'; sitem.Unit_of_measure__c = 'unit'; sitem.Account_Owner__c = acc.id; insert sitem; Stock_Entry__c sec = new Stock_Entry__c(); sec.Virtual_Bin_Designation__c = 'test'; sec.units_Entry__c = 0; sec.item__c = sitem.Id; sec.status__c = 'In hand'; insert sec; Test.startTest(); MasterInventoryETL mItest = new MasterInventoryETL(); mItest.execute(null); Test.stopTest(); } @isTest static void test3() { Account acc = new Account(); acc.name ='Test'; acc.RecordTypeID = '012j0000000pirBAAQ'; insert acc; Sourcing_Item__c sitem = new Sourcing_Item__c(); sitem.name = 'test mitem'; sitem.Unit_of_measure__c = 'unit'; sitem.Account_Owner__c = acc.id; insert sitem; Stock_Entry__c sec = new Stock_Entry__c(); sec.Virtual_Bin_Designation__c = 'test'; sec.units_Entry__c = 0; sec.item__c = sitem.Id; sec.status__c = 'In hand'; insert sec; test.startTest(); String jobId = System.schedule('MasterInventoryETL', CRON_EXP, new MasterInventoryETL()); Test.stopTest(); } }Any help would be apperciated. I am making test data to be used in the test method but I'm not even sure what data points I should make, how to make test data or how to confirm I'm creating things properly.
I don't see any issues with the test class other than using SeeAllData=true where you can use @TestSetup
If you want examples, I recommend reviewing the following posts
http://amitsalesforce.blogspot.com/2017/07/how-to-write-test-class-for-scheduler.html
https://salesforce.stackexchange.com/questions/95827/test-class-for-scheduler-class
Let me know if it helps
So I'm what should I put into the developer console when checking if I can schedule the job anonymously? I used the following and get an error:
Unexpected token 'jobId'
Also I've followed the examples in the links you've sent but my code coverage isn't improving:
It looks like what I'm doing isn't relating to the apex class I want to test