diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,8 @@
+- 0.2.7.2 (2019-06-07)
+    * Relax hashable upper bound to 1.3
+    * Relax QuickCheck upper bound to 2.13
+    * Switch from test-framework to tasty
+
 - 0.2.7.1 (2019-01-07)
     * Relax QuickCheck upper bound to 2.12
 
diff --git a/psqueues.cabal b/psqueues.cabal
--- a/psqueues.cabal
+++ b/psqueues.cabal
@@ -1,5 +1,5 @@
 Name:          psqueues
-Version:       0.2.7.1
+Version:       0.2.7.2
 License:       BSD3
 License-file:  LICENSE
 Maintainer:    Jasper Van der Jeugt <jaspervdj@gmail.com>
@@ -66,7 +66,7 @@
     Build-depends:
           base     >= 4.2     && < 5
         , deepseq  >= 1.2     && < 1.5
-        , hashable >= 1.1.2.3 && < 1.3
+        , hashable >= 1.1.2.3 && < 1.4
 
     if impl(ghc>=6.10)
         Build-depends: ghc-prim
@@ -141,11 +141,11 @@
         Data.PSQ.Class.Util
 
     Build-depends:
-          HUnit                      >= 1.2 && < 1.7
-        , QuickCheck                 >= 2.7 && < 2.13
-        , test-framework             >= 0.8 && < 0.9
-        , test-framework-hunit       >= 0.3 && < 0.4
-        , test-framework-quickcheck2 >= 0.3 && < 0.4
+          HUnit            >= 1.2 && < 1.7
+        , QuickCheck       >= 2.7 && < 2.14
+        , tasty            >= 1.2 && < 1.3
+        , tasty-hunit      >= 0.9 && < 0.11
+        , tasty-quickcheck >= 0.8 && < 0.11
 
         , base
         , array
diff --git a/tests/Data/HashPSQ/Tests.hs b/tests/Data/HashPSQ/Tests.hs
--- a/tests/Data/HashPSQ/Tests.hs
+++ b/tests/Data/HashPSQ/Tests.hs
@@ -2,17 +2,16 @@
     ( tests
     ) where
 
-import           Prelude                        hiding (lookup)
+import           Prelude               hiding (lookup)
 
-import           Test.Framework                       (Test)
-import           Test.Framework.Providers.HUnit       (testCase)
-import           Test.Framework.Providers.QuickCheck2 (testProperty)
-import           Test.QuickCheck                      (Property, arbitrary,
-                                                       forAll)
-import           Test.HUnit                           (Assertion, assert)
+import           Test.HUnit            (Assertion, assert)
+import           Test.QuickCheck       (Property, arbitrary, forAll)
+import           Test.Tasty            (TestTree)
+import           Test.Tasty.HUnit      (testCase)
+import           Test.Tasty.QuickCheck (testProperty)
 
 import           Data.HashPSQ.Internal
-import qualified Data.OrdPSQ                    as OrdPSQ
+import qualified Data.OrdPSQ           as OrdPSQ
 import           Data.PSQ.Class.Gen
 import           Data.PSQ.Class.Util
 
@@ -21,7 +20,7 @@
 -- Index of tests
 --------------------------------------------------------------------------------
 
-tests :: [Test]
+tests :: [TestTree]
 tests =
     [ testCase      "showBucket"    test_showBucket
     , testCase      "toBucket"      test_toBucket
diff --git a/tests/Data/IntPSQ/Tests.hs b/tests/Data/IntPSQ/Tests.hs
--- a/tests/Data/IntPSQ/Tests.hs
+++ b/tests/Data/IntPSQ/Tests.hs
@@ -1,14 +1,13 @@
 module Data.IntPSQ.Tests
     where
 
-import           Prelude hiding (lookup)
+import           Prelude               hiding (lookup)
 
-import           Test.QuickCheck                      (Property, arbitrary,
-                                                       forAll)
-import           Test.Framework                       (Test)
-import           Test.Framework.Providers.HUnit       (testCase)
-import           Test.Framework.Providers.QuickCheck2 (testProperty)
-import           Test.HUnit                           (Assertion, assert)
+import           Test.HUnit            (Assertion, assert)
+import           Test.QuickCheck       (Property, arbitrary, forAll)
+import           Test.Tasty            (TestTree)
+import           Test.Tasty.HUnit      (testCase)
+import           Test.Tasty.QuickCheck (testProperty)
 
 import           Data.IntPSQ.Internal
 import           Data.PSQ.Class.Gen
@@ -18,7 +17,7 @@
 -- Index of tests
 --------------------------------------------------------------------------------
 
-tests :: [Test]
+tests :: [TestTree]
 tests =
     [ testCase     "hasBadNils"     test_hasBadNils
     , testProperty "unsafeInsertIncreasePriority"
diff --git a/tests/Data/OrdPSQ/Tests.hs b/tests/Data/OrdPSQ/Tests.hs
--- a/tests/Data/OrdPSQ/Tests.hs
+++ b/tests/Data/OrdPSQ/Tests.hs
@@ -2,21 +2,21 @@
     ( tests
     ) where
 
-import           Data.List                            (isInfixOf)
-import           Test.Framework                       (Test)
-import           Test.Framework.Providers.HUnit       (testCase)
-import           Test.Framework.Providers.QuickCheck2 (testProperty)
-import           Test.HUnit                           (Assertion, assert)
+import           Data.List             (isInfixOf)
+import           Test.HUnit            (Assertion, assert)
+import           Test.Tasty            (TestTree)
+import           Test.Tasty.HUnit      (testCase)
+import           Test.Tasty.QuickCheck (testProperty)
 
 import           Data.OrdPSQ.Internal
-import           Data.PSQ.Class.Gen                   ()
+import           Data.PSQ.Class.Gen    ()
 import           Data.PSQ.Class.Util
 
 --------------------------------------------------------------------------------
 -- Index of tests
 --------------------------------------------------------------------------------
 
-tests :: [Test]
+tests :: [TestTree]
 tests =
     [ testCase     "showElem"      test_showElem
     , testCase     "showLTree"     test_showLTree
diff --git a/tests/Data/PSQ/Class/Tests.hs b/tests/Data/PSQ/Class/Tests.hs
--- a/tests/Data/PSQ/Class/Tests.hs
+++ b/tests/Data/PSQ/Class/Tests.hs
@@ -1,25 +1,24 @@
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE FlexibleInstances   #-}
 {-# LANGUAGE FlexibleContexts    #-}
+{-# LANGUAGE FlexibleInstances   #-}
+{-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies        #-}
 module Data.PSQ.Class.Tests
     ( tests
     ) where
 
-import           Prelude             hiding (null, lookup, map, foldr)
-import           Control.Applicative ((<$>))
-import           Control.DeepSeq     (NFData, rnf)
-import           Data.Tagged         (Tagged (..), untag)
-import qualified Data.List           as List
-import           Data.Char           (isPrint, isAlphaNum, ord, toLower)
-import           Data.Foldable       (Foldable, foldr)
+import           Control.Applicative   ((<$>))
+import           Control.DeepSeq       (NFData, rnf)
+import           Data.Char             (isAlphaNum, isPrint, ord, toLower)
+import           Data.Foldable         (Foldable, foldr)
+import qualified Data.List             as List
+import           Data.Tagged           (Tagged (..), untag)
+import           Prelude               hiding (foldr, lookup, map, null)
 
-import           Test.QuickCheck                      (Arbitrary (..), Property,
-                                                       (==>), forAll)
-import           Test.HUnit                           (Assertion, assert, (@?=))
-import           Test.Framework                       (Test)
-import           Test.Framework.Providers.HUnit       (testCase)
-import           Test.Framework.Providers.QuickCheck2 (testProperty)
+import           Test.HUnit            (Assertion, assert, (@?=))
+import           Test.QuickCheck       (Arbitrary (..), Property, forAll, (==>))
+import           Test.Tasty            (TestTree)
+import           Test.Tasty.HUnit      (testCase)
+import           Test.Tasty.QuickCheck (testProperty)
 
 import           Data.PSQ.Class
 import           Data.PSQ.Class.Gen
@@ -38,7 +37,7 @@
                     Functor (psq Int),
                     NFData (psq Int Char),
                     Show (psq Int Char))
-    => Tagged psq [Test]
+    => Tagged psq [TestTree]
 tests = Tagged
     [ testCase "rnf"      (untag' test_rnf)
     , testCase "equality" (untag' test_equality)
@@ -317,8 +316,8 @@
             Just _  -> (size t - 1) == size t' && lookup k t' == Nothing
             Nothing -> (size t + 1) == size t' && lookup k t' /= Nothing
   where
-    f Nothing   = ((), Just (100, 'a'))
-    f (Just _)  = ((), Nothing)
+    f Nothing  = ((), Just (100, 'a'))
+    f (Just _) = ((), Nothing)
 
 prop_alterMin
     :: forall psq. (PSQ psq, TestKey (Key psq),
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -1,6 +1,6 @@
 import           Data.Tagged          (Tagged (..), untag)
 
-import           Test.Framework       (Test, defaultMain, testGroup)
+import           Test.Tasty           (TestTree, defaultMain, testGroup)
 
 import qualified Data.HashPSQ         as HashPSQ
 import qualified Data.HashPSQ.Tests
@@ -12,7 +12,7 @@
 import           Data.PSQ.Class.Util
 
 main :: IO ()
-main = defaultMain
+main = defaultMain $ testGroup "psqueues"
     [ testGroup "Data.IntPSQ.Tests"
         Data.IntPSQ.Tests.tests
     , testGroup "Data.HashPSQ.Tests"
@@ -21,11 +21,11 @@
         Data.OrdPSQ.Tests.tests
     , testGroup "Data.PSQ.Class.Tests IntPSQ"  $ untag
         (Data.PSQ.Class.Tests.tests
-            :: Tagged IntPSQ.IntPSQ [Test])
+            :: Tagged IntPSQ.IntPSQ [TestTree])
     , testGroup "Data.PSQ.Class.Tests PSQ"     $ untag
         (Data.PSQ.Class.Tests.tests
-            :: Tagged (OrdPSQ.OrdPSQ Int) [Test])
+            :: Tagged (OrdPSQ.OrdPSQ Int) [TestTree])
     , testGroup "Data.PSQ.Class.Tests HashPSQ" $ untag
         (Data.PSQ.Class.Tests.tests
-            :: Tagged (HashPSQ.HashPSQ LousyHashedInt) [Test])
+            :: Tagged (HashPSQ.HashPSQ LousyHashedInt) [TestTree])
     ]
