diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 ## Changes
 
+#### 1.6.0.0
+
+- Generalize return type of `assertFailure` to `IO a`
+
 #### 1.5.0.0
 
 - Preserve actual/expected for `assertEqual` failures
diff --git a/HUnit.cabal b/HUnit.cabal
--- a/HUnit.cabal
+++ b/HUnit.cabal
@@ -1,9 +1,9 @@
--- This file has been generated from package.yaml by hpack version 0.15.0.
+-- This file has been generated from package.yaml by hpack version 0.17.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:                   HUnit
-version:                1.5.0.0
+version:                1.6.0.0
 cabal-version:          >= 1.10
 license:                BSD3
 license-file:           LICENSE
diff --git a/src/Test/HUnit/Lang.hs b/src/Test/HUnit/Lang.hs
--- a/src/Test/HUnit/Lang.hs
+++ b/src/Test/HUnit/Lang.hs
@@ -55,7 +55,7 @@
 assertFailure ::
      HasCallStack =>
      String -- ^ A message that is displayed with the assertion failure
-  -> Assertion
+  -> IO a
 assertFailure msg = msg `deepseq` E.throwIO (HUnitFailure location $ Reason msg)
 
 -- | Asserts that the specified actual value is equal to the expected value.
diff --git a/tests/HUnitTestBase.lhs b/tests/HUnitTestBase.lhs
--- a/tests/HUnitTestBase.lhs
+++ b/tests/HUnitTestBase.lhs
@@ -81,7 +81,7 @@
 > ok :: Test
 > ok = test (assert ())
 > bad :: String -> Test
-> bad m = test (assertFailure m)
+> bad m = test (assertFailure m :: Assertion)
 
 
 > assertTests :: Test
@@ -108,7 +108,7 @@
 
 >   "assertFailure" ~:
 >     let msg = "simple assertFailure"
->     in expectFailure msg (test (assertFailure msg)),
+>     in expectFailure msg (test (assertFailure msg :: Assertion)),
 
 >   "assertString null" ~: expectSuccess (TestCase (assertString "")),
 
