In order to test the setter method, you need to actually set the value.
You are testing the getter with this line
String[] lead1=crmctrl.LeadItems;
You need to test the setter in a similar way, by actually setting the value of the property. Something like this
List<String> stringList = new List<String>{'string1','string2','string3'};
crmctrl.LeadItems = stringList;
That will give you coverage on the setter.
On another note, I would also suggest you read up up Apex testing best practices here. In particular, I this best practice
Use System.assert methods to prove that code behaves properly.
You are coding for test coverage, but you really should be using assert methods to ensure your code is behaving as you expect it to behave
Mocking the external object API calls is not properly supported by SFDC yet. However, there is a pretty neat workaround by Graham Barnard. It does require some redesign of your External Object queries and it will not give you 100% test coverage (because of the isRunnningTest()
statement). But it will allow you to functionally test the code that calls the external objects
http://grahambarnard.com/development/2016/02/08/mocking-external-objects/
Best Answer
It's the same as you'd do for any other method: