Kulasekara, 33, is a veteran of 21 Tests, taking 48 wickets at an average of 37.37 – but his last appearance in the five-day format was against England in 2014.
He revealed his decision in a letter to Sri Lanka Cricket (SLC) on Wednesday, saying he wanted to turn his attentions solely to the shorter formats.
"I would like to retire from playing Test cricket with immediate effect," Kulasekara wrote.
"After much thought I believe it is the right time to retire and I hope it will allow me to better prepare for ODI and T20 cricket, which I would like to continue playing for Sri Lanka subject to good performance and selection."
Kulasekara has played 173 ODIs and 50 T20s for his country, who are in England and trail the hosts 2-0 in a three-Test series.