not sure where you saw that using RegionFactory is not a best practice...check out ehcache documentation at http://ehcache.org/documentation/user-guide/hibernate#Configure-Ehcache-as-the-Second-Level-Cache-Provider...and that's exactly what they say you should be using.
Also, You should use the SingletonEhCacheRegionFactory which should fix your junit issue (singleton means there will be 1 cache manger only...hence no 2 cachemanager with same cachename as shown in your exception)
net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
Please note: For Hibernate 4, use org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory instead of net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory
Hope that helps.