Why did he test now if he didn't test in the past?
Did he start to show symptoms and is that why he tested? If so then it is a new infection, he would not carry it for 3 years with no symptoms, neither would you probably.
Not all sexual encounters pass STD's, but if he had it for 3 years and you have been having unprotected sex with him then you have it by now. Here are the possibilities that I know.
1) He could have cheated and that is why he tested now and is positive
2) He could have had it all along but your test might have been too soon to show a positive result.
3) He could have had it and not passed it to you until after your test.
4) His test is a false positive, have you been tested?
I lean more towards 1 and 4 then 2 and 3.
You need to get tested and talk with him.
He says he only got tested because he got a letter from the NHS asking if he wants to be tested so he just did it?! He didn't show any symptoms! I am going to get tested tomorrow but he told me that his doctor said i need to take the medication anyway?! Is this true or should i wait to get tested first! Also he has taken his medication already so if i test and get negative is it safe to have unprotected sex then? Or is there a chance i wil get it?! And if i test positive and take the medication how do i know if it has worked in both him and me??
Since you have doubt in your mind as to if he has it I would wait to take the medication until you get tested and get your results.
They say wait 7 days after taking the medication to have sex. The medication most likely would work only way to know for sure is to retest after the 7 days.
If you test positive I doubt that you and him would have had it for over 2 years with no symptoms.