diff --git a/Lib/test/output/test_frozen b/Lib/test/output/test_frozen
deleted file mode 100644
index 76f17db..0000000
--- a/Lib/test/output/test_frozen
+++ /dev/null
@@ -1,4 +0,0 @@
-test_frozen
-Hello world...
-Hello world...
-Hello world...
diff --git a/Lib/test/test_frozen.py b/Lib/test/test_frozen.py
index 8b121d3..621720c 100644
--- a/Lib/test/test_frozen.py
+++ b/Lib/test/test_frozen.py
@@ -1,27 +1,40 @@
 # Test the frozen module defined in frozen.c.
+from __future__ import with_statement
 
-from test.test_support import TestFailed
+from test.test_support import captured_stdout, run_unittest
+import unittest
 import sys, os
 
-try:
-    import __hello__
-except ImportError, x:
-    raise TestFailed, "import __hello__ failed:" + str(x)
+class FrozenTests(unittest.TestCase):
+    def test_frozen(self):
 
-try:
-    import __phello__
-except ImportError, x:
-    raise TestFailed, "import __phello__ failed:" + str(x)
+        with captured_stdout() as stdout:
+            try:
+                import __hello__
+            except ImportError, x:
+                self.fail("import __hello__ failed:" + str(x))
 
-try:
-    import __phello__.spam
-except ImportError, x:
-    raise TestFailed, "import __phello__.spam failed:" + str(x)
+            try:
+                import __phello__
+            except ImportError, x:
+                self.fail("import __phello__ failed:" + str(x))
 
-if sys.platform != "mac":  # On the Mac this import does succeed.
-    try:
-        import __phello__.foo
-    except ImportError:
-        pass
-    else:
-        raise TestFailed, "import __phello__.foo should have failed"
+            try:
+                import __phello__.spam
+            except ImportError, x:
+                self.fail("import __phello__.spam failed:" + str(x))
+
+            if sys.platform != "mac":  # On the Mac this import does succeed.
+                try:
+                    import __phello__.foo
+                except ImportError:
+                    pass
+                else:
+                    self.fail("import __phello__.foo should have failed")
+
+        self.assertEquals(stdout.getvalue(),
+                          'Hello world...\nHello world...\nHello world...\n')
+
+
+def test_main():
+    run_unittest(FrozenTests)
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 0f96084..cba0a49 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -374,6 +374,22 @@
     return contextlib.nested(time_out, socket_peer_reset, ioerror_peer_reset)
 
 
+@contextlib.contextmanager
+def captured_stdout():
+    """Run the with statement body using a StringIO object as sys.stdout.
+    Example use::
+
+       with captured_stdout() as s:
+           print "hello"
+       assert s.getvalue() == "hello"
+    """
+    import StringIO
+    orig_stdout = sys.stdout
+    sys.stdout = StringIO.StringIO()
+    yield sys.stdout
+    sys.stdout = orig_stdout
+
+
 #=======================================================================
 # Decorator for running a function in a different locale, correctly resetting
 # it afterwards.
