Actually, there's a real easy way to determine if the fault is in the starter motor assembly or not. Go to the starter motor and you will see three terminals - two have heavy gauge cables attached, and the third is a smaller terminal with a much thinner wire - disconnect that wire (it's the one which comes from the starter relay). Then get a length of wire, strip some insulation from the end and connect it to that same terminal. Then route the other end of the wire up to near the battery - strip a quarter inch of insulation from the end but don't actually connect it to anything - just have it sitting there ready.
Then ensure that the truck is in Neutral if it's a manual, or Neutral or Park if it's an automatic, and apply the parking brake firmly. Switch the ignition to the Run position and then go around to the engine bay and touch the bare end of that wire against the battery positive terminal - the engine will crank and fire - take the wire away from the battery as soon as it's running. Then go and turn your ignition switch off - if it continues to crank then it must be a fault in the starter motor solenoid, but if it now behaves normally then you know that the starter motor is good and therefore the fault must be in the relay or its associated wiring (do it a few times to ensure that it really is working normally).
If you're not used to doing electrical fault-finding then I'd recommend doing that before any electrical checks, and it will quickly tell you where the problem is.