diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/TestToggleBreakpointsTarget.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/TestToggleBreakpointsTarget.java
index 40f2330..5de8719 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/TestToggleBreakpointsTarget.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/TestToggleBreakpointsTarget.java
@@ -40,12 +40,12 @@
 		try {
 			Path path = new Path("testfiles/source/SomeClass.java");
 			toggleBreakpoint(path, 22); // 0 based offset in document line numbers
+			TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT);
 			IBreakpoint added = listener.getAdded();
 			assertTrue("Should be a line breakpoint", added instanceof IJavaLineBreakpoint);
 			IJavaLineBreakpoint breakpoint = (IJavaLineBreakpoint) added;
 			assertEquals("Wrong line number", 23, breakpoint.getLineNumber());
 			assertEquals("Wrong type name", "a.b.c.SomeClass", breakpoint.getTypeName());
-			TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT);
 		} finally {
 			manager.removeBreakpointListener(listener);
 			removeAllBreakpoints();
@@ -65,12 +65,12 @@
 		try {
 			Path path = new Path("testfiles/source/SomeClass.java");
 			toggleBreakpoint(path, 19); // 0 based offset in document line numbers
+			TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT);
 			IBreakpoint added = listener.getAdded();
 			assertTrue("Should be a watchpoint", added instanceof IJavaWatchpoint);
 			IJavaWatchpoint breakpoint = (IJavaWatchpoint) added;
 			assertEquals("Wrong type name", "a.b.c.SomeClass", breakpoint.getTypeName());
 			assertEquals("Wrong field name", "someField", breakpoint.getFieldName());
-			TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT);
 		} finally {
 			manager.removeBreakpointListener(listener);
 			removeAllBreakpoints();
@@ -90,6 +90,7 @@
 		try {
 			Path path = new Path("testfiles/source/SomeClass.java");
 			toggleBreakpoint(path, 21); // 0 based offset in document line numbers
+			TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT);
 			IBreakpoint added = listener.getAdded();
 			assertTrue("Should be a method breakpoint", added instanceof IJavaMethodBreakpoint);
 			IJavaMethodBreakpoint breakpoint = (IJavaMethodBreakpoint) added;
@@ -98,7 +99,6 @@
 			// this will actually fail to suspend since 'SomeClass' is not qualified, but we can't resolve the type
 			// without a build path, etc. (not a regression)
 			assertEquals("Wrong signature", "(Ljava/lang/String;LSomeClass;)V", breakpoint.getMethodSignature());
-			TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT);
 		} finally {
 			manager.removeBreakpointListener(listener);
 			removeAllBreakpoints();
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/TestToggleBreakpointsTarget8.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/TestToggleBreakpointsTarget8.java
index d864bac..7f65f38 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/TestToggleBreakpointsTarget8.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/TestToggleBreakpointsTarget8.java
@@ -15,6 +15,7 @@
 import org.eclipse.debug.core.model.IBreakpoint;
 import org.eclipse.jdt.debug.core.IJavaLineBreakpoint;
 import org.eclipse.jdt.debug.core.IJavaMethodBreakpoint;
+import org.eclipse.jdt.debug.tests.TestUtil;
 
 /**
  * Tests the Java debugger's 'toggle breakpoints target'.
@@ -42,6 +43,7 @@
 		try {
 			Path path = new Path("java8/EvalTestIntf18.java");
 			toggleBreakpoint(path, 20); // 0 based offset in document line numbers
+			TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT);
 			IBreakpoint added = listener.getAdded();
 			assertTrue("Should be a method breakpoint", added instanceof IJavaMethodBreakpoint);
 			IJavaMethodBreakpoint breakpoint = (IJavaMethodBreakpoint) added;
@@ -67,6 +69,7 @@
 		try {
 			Path path = new Path("java8/EvalTestIntf18.java");
 			toggleBreakpoint(path, 25); // 0 based offset in document line numbers
+			TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT);
 			IBreakpoint added = listener.getAdded();
 			assertTrue("Should be a method breakpoint", added instanceof IJavaMethodBreakpoint);
 			IJavaMethodBreakpoint breakpoint = (IJavaMethodBreakpoint) added;
@@ -93,6 +96,7 @@
 		try {
 			Path path = new Path("java8/EvalTestIntf18.java");
 			toggleBreakpoint(path, 19); // 0 based offset in document line numbers
+			TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT);
 			assertTrue(listener.isEmpty());
 		} finally {
 			manager.removeBreakpointListener(listener);
@@ -113,6 +117,7 @@
 		try {
 			Path path = new Path("java8/EvalTestIntf18.java");
 			toggleBreakpoint(path, 21); // 0 based offset in document line numbers
+			TestUtil.waitForJobs(getName(), 100, DEFAULT_TIMEOUT);
 			IBreakpoint added = listener.getAdded();
 			assertTrue("Should be a line breakpoint", added instanceof IJavaLineBreakpoint);
 			IJavaLineBreakpoint breakpoint = (IJavaLineBreakpoint) added;
