diff --git a/Lib/idlelib/CallTips.py b/Lib/idlelib/CallTips.py
index 3c8c096..41de756 100644
--- a/Lib/idlelib/CallTips.py
+++ b/Lib/idlelib/CallTips.py
@@ -264,4 +264,6 @@
     print("%d of %d tests failed" % (num_fail, num_tests))
 
 if __name__ == '__main__':
-    main()
+    #main()
+    from unittest import main
+    main('idlelib.idle_test.test_calltips', verbosity=2, exit=False)
diff --git a/Lib/idlelib/PathBrowser.py b/Lib/idlelib/PathBrowser.py
index 55bf1aa..09b3bbf 100644
--- a/Lib/idlelib/PathBrowser.py
+++ b/Lib/idlelib/PathBrowser.py
@@ -95,4 +95,5 @@
         mainloop()
 
 if __name__ == "__main__":
-    main()
+    from unittest import main
+    main('idlelib.idle_test.test_pathbrowser', verbosity=2, exit=False)
diff --git a/Lib/idlelib/idle_test/@README.txt b/Lib/idlelib/idle_test/@README.txt
new file mode 100644
index 0000000..f6797c6
--- /dev/null
+++ b/Lib/idlelib/idle_test/@README.txt
@@ -0,0 +1,63 @@
+README FOR IDLE TESTS IN IDLELIB.IDLE_TEST
+
+The idle directory, idlelib, has over 60 xyz.py files. The idle_test
+subdirectory should contain a test_xyy.py for each one. (For test modules,
+make 'xyz' lower case.) Each should start with the following cut-paste
+template, with the blanks after after '.'. 'as', and '_' filled in.
+---
+import unittest
+import idlelib. as 
+
+class Test_(unittest.TestCase):
+
+    def test_(self):
+
+if __name__ == '__main__':
+    unittest.main(verbosity=2, exit=2)
+---
+Idle tests are run with unittest; do not use regrtest's test_main.
+
+Once test_xyy is written, the following should go at the end of xyy.py,
+with xyz (lowercased) added after 'test_'.
+---
+if __name__ == "__main__":
+    import unittest
+    unittest.main('idlelib.idle_test.test_', verbosity=2, exit=False)
+---
+
+In Idle, pressing F5 in an editor window with either xyz.py or test_xyz.py
+loaded will then run the test with the version of Python running Idle and
+tracebacks will appear in the Shell window. The options are appropriate for
+developers running (as opposed to importing) either type of file during
+development: verbosity=2 lists all test_y methods; exit=False avoids a
+spurious sys.exit traceback when running in Idle. The following command
+lines also run test_xyz.py
+
+python -m idlelib.xyz  # With the capitalization of the xyz module
+python -m unittest -v idlelib.idle_test.test_xyz
+
+To run all idle tests either interactively ('>>>', with unittest imported)
+or from a command line, use one of the following.
+
+>>> unittest.main('idlelib.idle_test', verbosity=2, exit=False)
+python -m unittest -v idlelib.idle_test
+python -m test.test_idle
+python -m test test_idle
+
+The idle tests are 'discovered' in idlelib.idle_test.__init__.load_tests,
+which is also imported into test.test_idle. Normally, neither file should be
+changed when working on individual test modules. The last command runs runs
+unittest indirectly through regrtest. The same happens when the entire test
+suite is run with 'python -m test'. So it must work for buildbots to stay green.
+
+To run an individual Testcase or test method, extend the
+dotted name given to unittest on the command line.
+
+python -m unittest -v idlelib.idle_test.text_xyz.Test_case.test_meth
+
+To disable test/test_idle.py, there are at least two choices.
+a. Comment out 'load_tests' line, no no tests are discovered (simple and safe);
+Running no tests passes, so there is no indication that nothing was run.
+b.Before that line, make module an unexpected skip for regrtest with
+import unittest; raise unittest.SkipTest('skip for buildbots')
+When run directly with unittest, this causes a normal exit and traceback.
\ No newline at end of file
diff --git a/Lib/idlelib/idle_test/__init__.py b/Lib/idlelib/idle_test/__init__.py
new file mode 100644
index 0000000..1bc9536
--- /dev/null
+++ b/Lib/idlelib/idle_test/__init__.py
@@ -0,0 +1,9 @@
+from os.path import dirname
+
+def load_tests(loader, standard_tests, pattern):
+    this_dir = dirname(__file__)
+    top_dir = dirname(dirname(this_dir))
+    package_tests = loader.discover(start_dir=this_dir, pattern='test*.py',
+                                    top_level_dir=top_dir)
+    standard_tests.addTests(package_tests)
+    return standard_tests
diff --git a/Lib/idlelib/idle_test/test_calltips.py b/Lib/idlelib/idle_test/test_calltips.py
new file mode 100644
index 0000000..a956967
--- /dev/null
+++ b/Lib/idlelib/idle_test/test_calltips.py
@@ -0,0 +1,11 @@
+import unittest
+import idlelib.CallTips as ct
+
+class Test_get_entity(unittest.TestCase):
+    def test_bad_entity(self):
+        self.assertIsNone(ct.get_entity('1/0'))
+    def test_good_entity(self):
+        self.assertIs(ct.get_entity('int'), int)
+
+if __name__ == '__main__':
+    unittest.main(verbosity=2, exit=False)
diff --git a/Lib/idlelib/idle_test/test_pathbrowser.py b/Lib/idlelib/idle_test/test_pathbrowser.py
new file mode 100644
index 0000000..7ad7c97
--- /dev/null
+++ b/Lib/idlelib/idle_test/test_pathbrowser.py
@@ -0,0 +1,12 @@
+import unittest
+import idlelib.PathBrowser as PathBrowser
+
+class PathBrowserTest(unittest.TestCase):
+
+    def test_DirBrowserTreeItem(self):
+        # Issue16226 - make sure that getting a sublist works
+        d = PathBrowser.DirBrowserTreeItem('')
+        d.GetSubList()
+
+if __name__ == '__main__':
+    unittest.main(verbosity=2, exit=False)
diff --git a/Lib/test/test_idle.py b/Lib/test/test_idle.py
new file mode 100644
index 0000000..1c18280
--- /dev/null
+++ b/Lib/test/test_idle.py
@@ -0,0 +1,14 @@
+# Skip test if tkinter wasn't built or idlelib was deleted.
+from test.support import import_module
+import_module('tkinter')  # discard return
+itdir = import_module('idlelib.idle_test')
+
+# Without test_main present, regrtest.runtest_inner (line1219)
+# imitates unittest.main by calling
+# unittest.TestLoader().loadTestsFromModule(this_module)
+# which look for load_tests and uses it if found.
+load_tests = itdir.load_tests
+
+if __name__ == '__main__':
+    import unittest
+    unittest.main(verbosity=2, exit=False)
diff --git a/Misc/ACKS b/Misc/ACKS
index e3cb700..52e444e 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -575,6 +575,7 @@
 Bill Janssen
 Thomas Jarosch
 Juhana Jauhiainen
+Rajagopalasarma Jayakrishnan
 Zbigniew Jędrzejewski-Szmek
 Julien Jehannet
 Drew Jenkins
diff --git a/Misc/NEWS b/Misc/NEWS
index 54ba363..0960423 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -46,6 +46,9 @@
 IDLE
 ----
 
+- Issue #15392: Create a unittest framework for IDLE.
+  Rajagopalasarma Jayakrishnan
+  
 - Issue #14146: Highlight source line while debugging on Windows.
 
 - Issue #17532: Always include Options menu for IDLE on OS X.
