Thanks for the updated information.
I have only minor comments on the code you supplied.
Try setting test on create to false and testonborrow to true. You only care about the connection when you use it, not create it, and you're creating 200 of them. also set testwhileidle to false as well for the same reason.
Extremely minor, change the related eviction settings to prime numbers. This reduces the chance (or pushes it to the future) when all the eviction related processes kick off at the same time.
I have always found for production purposes that you need to 'prime the pump' before using the connections. Create a little startup task that in multiple concurrent threads (200 in this case) makes a simple call to the server. This will force the creation of a connection and put it into the pool. Then start your test when all the threads complete. This is easy to do with an Executor configured to more than 200 threads and invokeAll().
You seem to use the same port for each instance. There is nothing wrong with that. But in production you usually specify both host and port in the config file since that stuff can change. A more tolerant split string is "\\s*,\\s*"
A newbie error which I've fixed for people many times, and submitted a Jedis patch long time ago for HostAndPort is NEVER USE 'LOCALHOST' as the name of the host. This only applies to Redis Cluster. Always configure with the ip address of the machine (not 127.0.0.1). Bad things happen in a cluster if you use localhost. It's quite fine to have an entire cluster for test purposes on the same machine, but use the ip address like 192.168.100.231 which is your machines address on your local network, but not the string localhost.
Please try at least 'prime the pump' before running your test and see if that helps.