Testing JUnit4.
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ConfigurationSessionTestSuite.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ConfigurationSessionTestSuite.java
index 892b424..9914734 100644
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ConfigurationSessionTestSuite.java
+++ b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/ConfigurationSessionTestSuite.java
@@ -26,25 +26,24 @@
 
 public class ConfigurationSessionTestSuite extends SessionTestSuite {
 	// include configurator as it is required by compatibility, but do not set it to start 	
-	public static String[] MINIMAL_BUNDLE_SET = {
-		"org.eclipse.equinox.common@2:start", 
-		"org.eclipse.core.runtime@:start",
-		
-		"org.eclipse.core.jobs", 
-		"org.eclipse.core.runtime.compatibility.registry",
-		"org.eclipse.equinox.registry", 
-		"org.eclipse.equinox.preferences", 
-		"org.eclipse.core.contenttype",
-		"org.eclipse.equinox.app",
-		"org.eclipse.core.runtime.compatibility", 
-		"org.eclipse.core.runtime.compatibility.auth", 
-		"org.eclipse.update.configurator", 
-		"org.eclipse.core.tests.harness", 
-		"org.eclipse.jdt.junit.runtime", 
-		"org.eclipse.pde.junit.runtime", 
-		"org.junit", 
-		"org.eclipse.test.performance"
-		};
+	public static String[] MINIMAL_BUNDLE_SET = {"org.eclipse.equinox.common@2:start", //
+			"org.eclipse.core.runtime@:start", //
+			"org.eclipse.core.jobs", //
+			"org.eclipse.core.runtime.compatibility.registry", //
+			"org.eclipse.equinox.registry", //
+			"org.eclipse.equinox.preferences", //
+			"org.eclipse.core.contenttype", //
+			"org.eclipse.equinox.app", //
+			"org.eclipse.core.runtime.compatibility", //
+			"org.eclipse.core.runtime.compatibility.auth", //
+			"org.eclipse.update.configurator", //
+			"org.eclipse.core.tests.harness", //
+			"org.eclipse.jdt.junit.runtime", //
+			"org.eclipse.jdt.junit4.runtime", //
+			"org.eclipse.pde.junit.runtime", //
+			"org.hamcrest.core", //
+			"org.junit", //
+			"org.eclipse.test.performance"};
 
 	private static final String PROP_CONFIG_AREA_READ_ONLY = InternalPlatform.PROP_CONFIG_AREA + ".readOnly";
 	private static final String PROP_CONFIG_CASCADED = "osgi.configuration.cascaded";
@@ -80,7 +79,7 @@
 	}
 
 	public void addBundle(String id) {
-		bundles.add(getURL(id));
+		bundles.addAll(getURLs(id));
 	}
 
 	private void createConfigINI() throws IOException {
@@ -93,7 +92,7 @@
 		}
 		osgiBundles.deleteCharAt(osgiBundles.length() - 1);
 		contents.put("osgi.bundles", osgiBundles.toString());
-		String osgiFramework = getURL("org.eclipse.osgi");
+		String osgiFramework = (String) getURLs("org.eclipse.osgi").get(0);
 		contents.put("osgi.framework", osgiFramework);
 		contents.put("osgi.bundles.defaultStartLevel", "4");
 		contents.put("osgi.install.area", Platform.getInstallLocation().getURL().toExternalForm());
@@ -125,33 +124,39 @@
 		return configurationPath;
 	}
 
-	private String getURL(String id) {
+	private List getURLs(String id) {
+		List result = new ArrayList();
 		String suffix = "";
 		int atIndex = id.indexOf("@");
 		if (atIndex >= 0) {
 			suffix = id.substring(atIndex);
 			id = id.substring(0, atIndex);
 		}
-		Bundle bundle = Platform.getBundle(id);
-		Assert.assertNotNull("0.1 " + id, bundle);
-		URL url = bundle.getEntry("/");
-		Assert.assertNotNull("0.2 " + id, url);
-		try {
-			url = FileLocator.resolve(url);
-		} catch (IOException e) {
-			CoreTest.fail("0.3 " + url, e);
+		Bundle[] allVersions = Platform.getBundles(id, null);
+		Assert.assertNotNull("0.0.1." + id, allVersions);
+		for (int i = 0; i < allVersions.length; i++) {
+			Bundle bundle = allVersions[i];
+			Assert.assertNotNull("0.1 " + id, bundle);
+			URL url = bundle.getEntry("/");
+			Assert.assertNotNull("0.2 " + id, url);
+			try {
+				url = FileLocator.resolve(url);
+			} catch (IOException e) {
+				CoreTest.fail("0.3 " + url, e);
+			}
+			String externalForm;
+			if (url.getProtocol().equals("jar")) {
+				// if it is a JAR'd plug-in, URL is jar:file:/path/file.jar!/ - see bug 86195
+				String path = url.getPath();
+				// change it to be file:/path/file.jar
+				externalForm = path.substring(0, path.length() - 2);
+			} else
+				externalForm = url.toExternalForm();
+			// workaround for bug 88070		
+			externalForm = "reference:" + externalForm;
+			result.add(externalForm + suffix);
 		}
-		String externalForm;
-		if (url.getProtocol().equals("jar")) {
-			// if it is a JAR'd plug-in, URL is jar:file:/path/file.jar!/ - see bug 86195
-			String path = url.getPath();
-			// change it to be file:/path/file.jar
-			externalForm = path.substring(0, path.length() - 2);
-		} else
-			externalForm = url.toExternalForm();
-		// workaround for bug 88070		
-		externalForm = "reference:" + externalForm;
-		return externalForm + suffix;
+		return result;
 	}
 
 	public boolean isCascaded() {
@@ -209,7 +214,7 @@
 						CoreTest.fail("0.1", e);
 					}
 				// end of KLUDGE
-				
+
 				runTest(allTests[i], result);
 			}
 		} finally {
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestRunner.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestRunner.java
index aa74764..b1988a8 100644
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestRunner.java
+++ b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SessionTestRunner.java
@@ -264,7 +264,7 @@
 		Assert.isTrue(setup.getEclipseArgument("classname") != null ^ setup.getEclipseArgument("test") != null, "either a test suite or a test case must be provided");
 		// to prevent changes in the protocol from breaking us, 
 		// force the version we know we can work with 
-		setup.setEclipseArgument("version", "3");
+		setup.setEclipseArgument("version", "4");
 		IStatus outcome = Status.OK_STATUS;
 		try {
 			int returnCode = setup.run();