diff --git a/js/tests/index.html b/js/tests/index.html
index b32f0adc22c42a5309f932a48a0d5ad6d38bd21e..05e9009fcb980094bdd60fa3b9a2ecea24e4142f 100644
--- a/js/tests/index.html
+++ b/js/tests/index.html
@@ -43,12 +43,12 @@
 
       QUnit.testStart(function (testDetails) {
         $(window).scrollTop(0)
-        QUnit.log = function (details) {
+        QUnit.log(function (details) {
           if (!details.result) {
             details.name = testDetails.name
             log.push(details)
           }
-        }
+        })
       })
 
       // Cleanup
diff --git a/js/tests/unit/affix.js b/js/tests/unit/affix.js
index d0d3ccc5232d682dba0ed16089bf2a081d4e5afd..d2c74f4640c76fa32c51b220ba37da4ac4822256 100644
--- a/js/tests/unit/affix.js
+++ b/js/tests/unit/affix.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('affix', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapAffix = $.fn.affix.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.affix = $.fn.bootstrapAffix
       delete $.fn.bootstrapAffix
     }
diff --git a/js/tests/unit/alert.js b/js/tests/unit/alert.js
index dc9235c77404b41be5b0861b8e8aeda9594e666d..75ae2d2ef897f1a1d43e642cf22dc38f8d41c443 100644
--- a/js/tests/unit/alert.js
+++ b/js/tests/unit/alert.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('alert', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapAlert = $.fn.alert.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.alert = $.fn.bootstrapAlert
       delete $.fn.bootstrapAlert
     }
diff --git a/js/tests/unit/button.js b/js/tests/unit/button.js
index d173916a0c5e16367c8758585394a3f7ab1615c3..5a547a370d9f42e20a67caf17f358815a943dcf4 100644
--- a/js/tests/unit/button.js
+++ b/js/tests/unit/button.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('button', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapButton = $.fn.button.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.button = $.fn.bootstrapButton
       delete $.fn.bootstrapButton
     }
diff --git a/js/tests/unit/carousel.js b/js/tests/unit/carousel.js
index 2044b14089f502684a96ede0b1a50dfbf0b0465e..4cae5e46e87f371ab250846d803c0c899c89d2ae 100644
--- a/js/tests/unit/carousel.js
+++ b/js/tests/unit/carousel.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('carousel', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapCarousel = $.fn.carousel.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.carousel = $.fn.bootstrapCarousel
       delete $.fn.bootstrapCarousel
     }
diff --git a/js/tests/unit/collapse.js b/js/tests/unit/collapse.js
index 1616fe48b072826f3d3a73b00fe856506761733c..c1a41a45f51e45cfd00970c6c08689bbf7d211da 100644
--- a/js/tests/unit/collapse.js
+++ b/js/tests/unit/collapse.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('collapse', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapCollapse = $.fn.collapse.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.collapse = $.fn.bootstrapCollapse
       delete $.fn.bootstrapCollapse
     }
diff --git a/js/tests/unit/dropdown.js b/js/tests/unit/dropdown.js
index 67b26174465a7a48d1ea37f8f28c18d065a1f97a..0a425200a698dc6c707f51d93b2a1e539c39704f 100644
--- a/js/tests/unit/dropdown.js
+++ b/js/tests/unit/dropdown.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('dropdowns', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapDropdown = $.fn.dropdown.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.dropdown = $.fn.bootstrapDropdown
       delete $.fn.bootstrapDropdown
     }
diff --git a/js/tests/unit/modal.js b/js/tests/unit/modal.js
index 3918bd1e4bddbcd4e0c55ab2b03f452753f0ea33..d0973a30d5701bb3cef4ffd36db9fe46177a68fd 100644
--- a/js/tests/unit/modal.js
+++ b/js/tests/unit/modal.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('modal', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapModal = $.fn.modal.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.modal = $.fn.bootstrapModal
       delete $.fn.bootstrapModal
     }
diff --git a/js/tests/unit/phantom.js b/js/tests/unit/phantom.js
index ea7455cfc35a5d06a10d788ba165abb3aeb13c2e..f6f0ac00fd5c1cfe6ede53cdceb5d1ac744afbbf 100644
--- a/js/tests/unit/phantom.js
+++ b/js/tests/unit/phantom.js
@@ -31,8 +31,8 @@
     if (!obj.result) {
       // Dumping large objects can be very slow, and the dump isn't used for
       // passing tests, so only dump if the test failed.
-      actual = QUnit.jsDump.parse(obj.actual)
-      expected = QUnit.jsDump.parse(obj.expected)
+      actual = QUnit.dump.parse(obj.actual)
+      expected = QUnit.dump.parse(obj.expected)
     }
     // Send it.
     sendMessage('qunit.log', obj.result, actual, expected, obj.message, obj.source)
diff --git a/js/tests/unit/popover.js b/js/tests/unit/popover.js
index 571ceddd43694524f39949a891a009317213a72f..55ab94971ada208b365b665e0fe09c95ad50461c 100644
--- a/js/tests/unit/popover.js
+++ b/js/tests/unit/popover.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('popover', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapPopover = $.fn.popover.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.popover = $.fn.bootstrapPopover
       delete $.fn.bootstrapPopover
     }
diff --git a/js/tests/unit/scrollspy.js b/js/tests/unit/scrollspy.js
index 5dfc9986632af6eff3243a18d62687164ee992c2..41d82e0e538343d78d1682e5e9bc97f3d77df010 100644
--- a/js/tests/unit/scrollspy.js
+++ b/js/tests/unit/scrollspy.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('scrollspy', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapScrollspy = $.fn.scrollspy.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.scrollspy = $.fn.bootstrapScrollspy
       delete $.fn.bootstrapScrollspy
     }
diff --git a/js/tests/unit/tab.js b/js/tests/unit/tab.js
index 215178cc89a63ccbb039deaaf8225bc9d5a80529..d497de454abadb094cfc12bb12c954869fe4adcb 100644
--- a/js/tests/unit/tab.js
+++ b/js/tests/unit/tab.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('tabs', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapTab = $.fn.tab.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.tab = $.fn.bootstrapTab
       delete $.fn.bootstrapTab
     }
diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js
index e5d1ad9660f9930820d0aacbc6245face0b51fec..e5409189b56309a5d8073ca8475f807da04a7380 100644
--- a/js/tests/unit/tooltip.js
+++ b/js/tests/unit/tooltip.js
@@ -8,11 +8,11 @@ $(function () {
   })
 
   QUnit.module('tooltip', {
-    setup: function () {
+    beforeEach: function () {
       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
       $.fn.bootstrapTooltip = $.fn.tooltip.noConflict()
     },
-    teardown: function () {
+    afterEach: function () {
       $.fn.tooltip = $.fn.bootstrapTooltip
       delete $.fn.bootstrapTooltip
     }