diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java
index 65e4c9e..43743f7 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java
@@ -109,7 +109,7 @@
 import org.eclipse.jdt.debug.tests.state.RefreshStateTests;
 import org.eclipse.jdt.debug.tests.ui.DetailPaneManagerTests;
 import org.eclipse.jdt.debug.tests.ui.OpenFromClipboardTests;
-import org.eclipse.jdt.debug.tests.ui.ViewMangementTests;
+import org.eclipse.jdt.debug.tests.ui.ViewManagementTests;
 import org.eclipse.jdt.debug.tests.ui.presentation.ModelPresentationTests;
 import org.eclipse.jdt.debug.tests.variables.TestAnonymousInspect;
 import org.eclipse.jdt.debug.tests.variables.TestInstanceRetrieval;
@@ -283,7 +283,7 @@
 		addTest(new TestSuite(HcrTests.class));
 		
 	// Layout tests
-		addTest(new TestSuite(ViewMangementTests.class));
+		addTest(new TestSuite(ViewManagementTests.class));
 		
 	// Leak tests
 		addTest(new TestSuite(InstructionPointerTests.class));
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/ViewMangementTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/ViewManagementTests.java
similarity index 95%
rename from org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/ViewMangementTests.java
rename to org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/ViewManagementTests.java
index 2e02bf0..7fe1065 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/ViewMangementTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/ViewManagementTests.java
@@ -34,7 +34,7 @@
 /**
  * Tests view management.
  */
-public class ViewMangementTests extends AbstractDebugTest implements IPerspectiveListener3 {
+public class ViewManagementTests extends AbstractDebugTest implements IPerspectiveListener3 {
 
 	// view ids
 	/**
@@ -69,7 +69,7 @@
 	 * Constructor
 	 * @param name
 	 */
-	public ViewMangementTests(String name) {
+	public ViewManagementTests(String name) {
 		super(name);
 	}
 		
@@ -292,7 +292,10 @@
 	 * 
 	 * @throws Exception
 	 */
-	public void testAutoCloseJavaPerspective() throws Exception {
+	//TODO: Disable test for now.  There is a race condition between activating and 
+	// closing of views.
+	//see https://bugs.eclipse.org/bugs/show_bug.cgi?id=398998
+/*	public void testAutoCloseJavaPerspective() throws Exception {
 		String typeName = "Breakpoints";
 		// first line in main
 		createLineBreakpoint(52, typeName);
@@ -314,23 +317,21 @@
 			assertNotNull("Breakpoint not hit within timeout period", thread);
 			assertTrue(buildRemainingEventsMessage(), checkComplete());
 			// terminate to auto close
-// TODO: Disable test for now.  There is a race condition between activating and 
-// closing of views.			
-//			synchronized (fEventLock) {
-//				expectingViewCloseEvents(window, new String[]{
-//						VIEW_TWO,
-//						IDebugUIConstants.ID_VARIABLE_VIEW,
-//						IDebugUIConstants.ID_BREAKPOINT_VIEW});
-//				thread.terminate();
-//				fEventLock.wait(DEFAULT_TIMEOUT);
-//			}
+			synchronized (fEventLock) {
+				expectingViewCloseEvents(window, new String[]{
+						VIEW_TWO,
+						IDebugUIConstants.ID_VARIABLE_VIEW,
+						IDebugUIConstants.ID_BREAKPOINT_VIEW});
+				thread.terminate();
+				fEventLock.wait(DEFAULT_TIMEOUT);
+			}
 			assertTrue(buildRemainingEventsMessage(), checkComplete());
 		} finally {
 			terminateAndRemove(thread);
 			removeAllBreakpoints();
 			window.removePerspectiveListener(this);
 		}		
-	}	
+	}*/	
 	
 	protected String buildRemainingEventsMessage() {
 		StringBuffer buffer = new StringBuffer();
