diff --git a/django/test/simple.py b/django/test/simple.py
index c9adfd2..a6491a1 100644
--- a/django/test/simple.py
+++ b/django/test/simple.py
@@ -49,7 +49,7 @@ def get_tests(app_module):
             raise
     return test_module
 
-def build_suite(app_module):
+def build_suite(app_module, test_loader=unittest.defaultTestLoader):
     "Create a complete Django test suite for the provided application module"
     suite = unittest.TestSuite()
 
@@ -58,7 +58,7 @@ def build_suite(app_module):
     if hasattr(app_module, 'suite'):
         suite.addTest(app_module.suite())
     else:
-        suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(app_module))
+        suite.addTest(test_loader.loadTestsFromModule(app_module))
         try:
             suite.addTest(doctest.DocTestSuite(app_module,
                                                checker=doctestOutputChecker,
@@ -76,7 +76,7 @@ def build_suite(app_module):
         if hasattr(test_module, 'suite'):
             suite.addTest(test_module.suite())
         else:
-            suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(test_module))
+            suite.addTest(test_loader.loadTestsFromModule(test_module))
             try:
                 suite.addTest(doctest.DocTestSuite(test_module,
                                                    checker=doctestOutputChecker,
@@ -86,7 +86,7 @@ def build_suite(app_module):
                 pass
     return suite
 
-def build_test(label):
+def build_test(label, test_loader=unittest.defaultTestLoader):
     """Construct a test case with the specified label. Label should be of the
     form model.TestClass or model.TestClass.test_method. Returns an
     instantiated test or test suite corresponding to the label provided.
@@ -112,7 +112,7 @@ def build_test(label):
         if issubclass(TestClass, (unittest.TestCase, real_unittest.TestCase)):
             if len(parts) == 2: # label is app.TestClass
                 try:
-                    return unittest.TestLoader().loadTestsFromTestCase(TestClass)
+                    return test_loader.loadTestsFromTestCase(TestClass)
                 except TypeError:
                     raise ValueError("Test label '%s' does not refer to a test class" % label)
             else: # label is app.TestClass.test_method
@@ -220,7 +220,13 @@ def dependency_ordered(test_databases, dependencies):
         test_databases = deferred
     return ordered_test_databases
 
+
+
 class DjangoTestSuiteRunner(object):
+    suite_class = unittest.TestSuite
+    runner_class = unittest.TextTestRunner
+    test_loader = unittest.defaultTestLoader
+
     def __init__(self, verbosity=1, interactive=True, failfast=True, **kwargs):
         self.verbosity = verbosity
         self.interactive = interactive
@@ -232,18 +238,18 @@ class DjangoTestSuiteRunner(object):
         unittest.installHandler()
 
     def build_suite(self, test_labels, extra_tests=None, **kwargs):
-        suite = unittest.TestSuite()
+        suite = self.suite_class()
 
         if test_labels:
             for label in test_labels:
                 if '.' in label:
-                    suite.addTest(build_test(label))
+                    suite.addTest(build_test(label, self.test_loader))
                 else:
                     app = get_app(label)
-                    suite.addTest(build_suite(app))
+                    suite.addTest(build_suite(app, self.test_loader))
         else:
             for app in get_apps():
-                suite.addTest(build_suite(app))
+                suite.addTest(build_suite(app, self.test_loader))
 
         if extra_tests:
             for test in extra_tests:
@@ -308,7 +314,7 @@ class DjangoTestSuiteRunner(object):
         return old_names, mirrors
 
     def run_suite(self, suite, **kwargs):
-        return unittest.TextTestRunner(verbosity=self.verbosity, failfast=self.failfast).run(suite)
+        return self.runner_class(verbosity=self.verbosity, failfast=self.failfast).run(suite)
 
     def teardown_databases(self, old_config, **kwargs):
         from django.db import connections
