So, your problem is this line `Account Accountx = [SELECT ID FROM account];` and then `AccountID = AccountX.id,` Since test code cannot see any data, there are no accounts to assign. Make sure you create an account in your test code, like the sample below. @isTest private class UserContactTest { testmethod static void userCreationTest(){ Account a = new Account(Name = 'Company Internal'); insert a; User u = new User(); u.Firstname = 'mike'; u.LastName = 'Smith'; u.email = '[email protected]'; u.Alias = 'alias'; u.CommunityNickname = 'commnick'; u.EmailEncodingKey = 'UTF-8'; u.Username = '[email protected]'; u.TimeZoneSidKey = 'America/Denver'; u.LocaleSidKey = 'en_US'; u.EmailEncodingKey = 'UTF-8'; u.LanguageLocaleKey = 'en_US'; u.ProfileId = [SELECT id FROM profile where Name = 'System Administrator'].Id; insert u; } ***However***, that will fix your test failure but won't make your code work. In your trigger, you are making a SoQL query within a loop. That is a big no-no. I am going to go ahead and assume that you do not want to get a "usercon" record created for each account in the system. That means a better way to query, and a way of figuring out which account you want to use. With that, here is a possible example, assuming all users will go to the same account public class UserContact { @future public static void createUserContact(set<ID> recordIDs){ list<user> users = [SELECT ID, Firstname, Lastname, email, name, CommunityNickname, TimeZoneSidKey, LocaleSidKey, EmailEncodingKey, ProfileId, LanguageLocaleKey FROM user WHERE ID in :recordIDs]; String accountName = 'Company Internal'; //This is where you will provide your name (could be any other field) //In this query you want to "LIMIT 1" to avoid more than 1 record returning Account Accountx = [SELECT ID FROM account where Name = :accountName LIMIT 1]; for (user x: users){ Contact userCon = new contact( AccountID = AccountX.id, FirstName = x.FirstName, LastName = x.LastName, email = x.Email); insert userCon; } } } My example is almost trivial. Let me know your use case (i.e.: how do you determine the account to choose) and I can improve my sample code.