diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java
index 47fa2ac..dcc84bb 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java
@@ -902,7 +902,7 @@
 		return repo;
 	}
 
-	protected static IProvisioningAgent getAgent() {
+	public static IProvisioningAgent getAgent() {
 		//get the global agent for the currently running system
 		return ServiceHelper.getService(TestActivator.getContext(), IProvisioningAgent.class);
 	}
@@ -925,7 +925,7 @@
 		return getAgent().getService(IProfileRegistry.class);
 	}
 
-	protected Transport getTransport() {
+	public Transport getTransport() {
 		return getAgent().getService(Transport.class);
 	}
 
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepTest.java
index 2798b6c..ab35828 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/processing/ProcessingStepTest.java
@@ -32,8 +32,8 @@
 public class ProcessingStepTest {
 
 	private ProcessingStep ps;
-	private boolean flushed;
-	private boolean closed;
+	boolean flushed;
+	boolean closed;
 
 	@Before
 	public void setUp() throws Exception {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileTest.java
index b2ba3a2..c89fc8e 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ProfileTest.java
@@ -168,7 +168,7 @@
 	}
 
 	private final static String PROFILE_TEST_TARGET = "profileTest";
-	private final static Version PROFILE_TEST_VERSION = Version.create("0.0.1");
+	final static Version PROFILE_TEST_VERSION = Version.create("0.0.1");
 
 	private final static String PROFILE_TEST_ELEMENT = "test";
 	public static final String PROFILES_ELEMENT = "profiles"; //$NON-NLS-1$
@@ -240,7 +240,7 @@
 			}
 		}
 
-		private final class TestHandler extends RootHandler {
+		final class TestHandler extends RootHandler {
 
 			private ProfilesHandler profilesHandler;
 			IProfile[] profiles;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java
index 0c2e098..28d2ab0 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPatchPersistenceTest.java
@@ -141,7 +141,7 @@
 	}
 
 	private final static String IU_TEST_TARGET = "installableUnitTest";
-	private final static Version IU_TEST_VERSION = Version.create("0.0.1");
+	final static Version IU_TEST_VERSION = Version.create("0.0.1");
 
 	private final static String IU_TEST_ELEMENT = "test";
 
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java
index 718fd3c..a4fbdd1 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/metadata/IUPersistenceTest.java
@@ -174,7 +174,7 @@
 
 	private final static String IU_TEST_TARGET = "installableUnitTest";
 
-	private final static Version IU_TEST_VERSION = Version.create("0.0.1");
+	final static Version IU_TEST_VERSION = Version.create("0.0.1");
 
 	// Randomly chose org.eclipse.osgi.services as the IU for testing persistence
 	// but 'enhanced' it for better coverage.
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/CacheManagerTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/CacheManagerTest.java
index 20ccc07..d0d15ad 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/CacheManagerTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/repository/CacheManagerTest.java
@@ -35,7 +35,7 @@
 public class CacheManagerTest {
 
 	private static final int ONE_HOUR = 3600000;
-	private URI repositoryLocation;
+	URI repositoryLocation;
 	private File contentXmlFile;
 	private CacheManager cacheManager;
 	private final String cachePrefix = "content"; //$NON-NLS-1$
@@ -111,7 +111,7 @@
 		return repository.toURI();
 	}
 
-	private class AgentLocationMock implements IAgentLocation {
+	class AgentLocationMock implements IAgentLocation {
 
 		@Override
 		public URI getDataArea(final String namespace) {
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/testserver/helper/AbstractTestServerClientCase.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/testserver/helper/AbstractTestServerClientCase.java
index 1c3846c..1ccf1db 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/testserver/helper/AbstractTestServerClientCase.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/testserver/helper/AbstractTestServerClientCase.java
@@ -15,7 +15,9 @@
 package org.eclipse.equinox.p2.tests.testserver.helper;
 
 import java.security.cert.Certificate;
-import junit.framework.*;
+import junit.framework.Protectable;
+import junit.framework.TestCase;
+import junit.framework.TestResult;
 import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
 import org.eclipse.equinox.p2.core.IProvisioningAgent;
 import org.eclipse.equinox.p2.core.UIServices;
@@ -41,11 +43,11 @@
 	 * Returns a URL string part consisting of http://localhost:<port>
 	 * @return String with first part of URL
 	 */
-	protected String getBaseURL() {
+	public String getBaseURL() {
 		return "http://localhost:" + System.getProperty(TestServerController.PROP_TESTSERVER_PORT, "8080");
 	}
 
-	protected static IProvisioningAgent getAgent() {
+	public static IProvisioningAgent getAgent() {
 		//get the global agent for the currently running system
 		return ServiceHelper.getService(TestActivator.getContext(), IProvisioningAgent.class);
 	}
