diff --git a/src/test/java/org/apache/geronimo/jcache/simple/tck/ExpiryListenerTest.java b/src/test/java/org/apache/geronimo/jcache/simple/tck/ExpiryListenerTest.java
index 2045437..ded8f40 100644
--- a/src/test/java/org/apache/geronimo/jcache/simple/tck/ExpiryListenerTest.java
+++ b/src/test/java/org/apache/geronimo/jcache/simple/tck/ExpiryListenerTest.java
@@ -26,6 +26,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Properties;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
 import javax.cache.Cache;
@@ -54,32 +55,42 @@
                 new Properties() {{
                     setProperty("evictionPause", "2");
                 }});
-        final CacheEntryExpiredListenerImpl listener = new CacheEntryExpiredListenerImpl();
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final CacheEntryExpiredListenerImpl listener = new CacheEntryExpiredListenerImpl(latch);
         cacheManager.createCache("default", new MutableConfiguration<String, String>()
                 .setExpiryPolicyFactory(new FactoryBuilder.SingletonFactory<ExpiryPolicy>(
                         new CreatedExpiryPolicy(new Duration(TimeUnit.MILLISECONDS, 2))))
-                .addCacheEntryListenerConfiguration(new MutableCacheEntryListenerConfiguration<String, String>(
+                .addCacheEntryListenerConfiguration(new MutableCacheEntryListenerConfiguration<>(
                         FactoryBuilder.factoryOf(listener),
                         null, false, false
                 )));
         final Cache<String, String> cache = cacheManager.getCache("default");
         assertFalse(cache.containsKey("foo"));
         cache.put("foo", "bar");
-        Thread.sleep(20);
+        latch.await(1, TimeUnit.MINUTES);
         assertEquals(1, listener.events.size());
         cachingProvider.close();
     }
 
     private static class CacheEntryExpiredListenerImpl implements CacheEntryExpiredListener<String, String>, Serializable {
+
         private final Collection<CacheEntryEvent<? extends String, ? extends String>> events =
                 new ArrayList<CacheEntryEvent<? extends String, ? extends String>>();
 
+        private CountDownLatch latch;
+
+        public CacheEntryExpiredListenerImpl(final CountDownLatch latch) {
+            this.latch = latch;
+        }
+
         @Override
         public void onExpired(final Iterable<CacheEntryEvent<? extends String, ? extends String>> cacheEntryEvents)
                 throws CacheEntryListenerException {
             for (final CacheEntryEvent<? extends String, ? extends String> cacheEntryEvent : cacheEntryEvents) {
                 events.add(cacheEntryEvent);
             }
+            latch.countDown();
         }
     }
 }
