diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/junit/core/TestingModule.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/junit/core/TestingModule.java
new file mode 100644
index 0000000..587b77d
--- /dev/null
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/junit/core/TestingModule.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2011 Google Inc.
+ *
+ * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
+ * Public License v1.0 which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package com.google.eclipse.protobuf.junit.core;
+
+import static org.mockito.Mockito.mock;
+
+import org.eclipse.core.runtime.IExtensionRegistry;
+
+import com.google.eclipse.protobuf.ProtobufRuntimeModule;
+import com.google.inject.Binder;
+import com.google.inject.Provider;
+
+/**
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public class TestingModule extends ProtobufRuntimeModule {
+
+  @Override public void configureExtensionRegistry(Binder binder) {
+    binder.bind(IExtensionRegistry.class).toProvider(FakeExtensionRegistryProvider.class);    
+  }
+  
+  public static class FakeExtensionRegistryProvider implements Provider<IExtensionRegistry> {
+    public IExtensionRegistry get() {
+      return mock(IExtensionRegistry.class);
+    }
+  }
+}
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/junit/core/TestingStandaloneSetup.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/junit/core/TestingStandaloneSetup.java
new file mode 100644
index 0000000..11f88f8
--- /dev/null
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/junit/core/TestingStandaloneSetup.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2011 Google Inc.
+ *
+ * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
+ * Public License v1.0 which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package com.google.eclipse.protobuf.junit.core;
+
+import com.google.eclipse.protobuf.ProtobufStandaloneSetup;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public class TestingStandaloneSetup extends ProtobufStandaloneSetup {
+
+  @Override
+  public Injector createInjector() {
+    return Guice.createInjector(new TestingModule());
+  }
+}
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/junit/core/XtextRule.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/junit/core/XtextRule.java
index b130379..ea542eb 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/junit/core/XtextRule.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/junit/core/XtextRule.java
@@ -21,7 +21,6 @@
 import org.junit.rules.MethodRule;
 import org.junit.runners.model.*;
 
-import com.google.eclipse.protobuf.ProtobufStandaloneSetup;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
 import com.google.inject.Injector;
 
@@ -90,7 +89,7 @@
     }
 
     private void setUpInjector() {
-      injector = new ProtobufStandaloneSetup().createInjectorAndDoEMFRegistration();
+      injector = new TestingStandaloneSetup().createInjectorAndDoEMFRegistration();
     }
   }
 }
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Descriptor_fileOptions_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Descriptor_fileOptions_Test.java
index 43ee6b3..fd65feb 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Descriptor_fileOptions_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Descriptor_fileOptions_Test.java
@@ -31,7 +31,7 @@
   private ProtoDescriptor descriptor;
 
   @Before public void setUp() {
-    descriptor = xtext.getInstanceOf(ProtoDescriptor.class);
+    descriptor = xtext.getInstanceOf(ProtoDescriptorProvider.class).get();
   }
 
   @Test public void should_return_all_file_options() {
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/DirectoryPath_parse_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/DirectoryPath_parse_Test.java
index 3cbd0e4..bd216d7 100644
--- a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/DirectoryPath_parse_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/DirectoryPath_parse_Test.java
@@ -28,12 +28,6 @@
     assertThat(path.isWorkspacePath(), equalTo(true));
   }
 
-  @Test public void should_parse_project_path() {
-    DirectoryPath path = DirectoryPath.parse("/${project}/src}");
-    assertThat(path.value(), equalTo("/${project}/src}"));
-    assertThat(path.isWorkspacePath(), equalTo(true));
-  }
-
   @Test public void should_parse_file_system_path() {
     DirectoryPath path = DirectoryPath.parse("/test/src");
     assertThat(path.value(), equalTo("/test/src"));
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/DirectoryPath_toString_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/DirectoryPath_toString_Test.java
index 750272d..0b1d1f5 100644
--- a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/DirectoryPath_toString_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/DirectoryPath_toString_Test.java
@@ -29,7 +29,7 @@
 
   @Test public void should_specify_is_project_path() {
     DirectoryPath path = new DirectoryPath("/${project}/src", true);
-    assertThat(path.toString(), equalTo("/${project}/src"));
+    assertThat(path.toString(), equalTo("${workspace_loc:/${project}/src}"));
   }
 
   @Test public void should_return_plain_value_if_it_is_not_workspace_path() {
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufRuntimeModule.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufRuntimeModule.java
index b3aaf61..4b3c0af 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufRuntimeModule.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufRuntimeModule.java
@@ -25,7 +25,6 @@
  */
 public class ProtobufRuntimeModule extends com.google.eclipse.protobuf.AbstractProtobufRuntimeModule {
 
-  /** {@inheritDoc} */
   @Override public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
     return ProtobufQualifiedNameProvider.class;
   }
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufStandaloneSetup.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufStandaloneSetup.java
index ac0af7c..d061543 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufStandaloneSetup.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/ProtobufStandaloneSetup.java
@@ -11,7 +11,7 @@
 /**
  * Initialization support for running Xtext languages without Equinox extension registry.
  */
-public class ProtobufStandaloneSetup extends ProtobufStandaloneSetupGenerated{
+public class ProtobufStandaloneSetup extends ProtobufStandaloneSetupGenerated {
 
 	public static void doSetup() {
 		new ProtobufStandaloneSetup().createInjectorAndDoEMFRegistration();
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java
index a5d0231..f83be37 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java
@@ -30,7 +30,6 @@
 import com.google.eclipse.protobuf.protobuf.*;
 import com.google.eclipse.protobuf.protobuf.Enum;
 import com.google.eclipse.protobuf.util.ModelNodes;
-import com.google.inject.Inject;
 
 /**
  * Contains the elements from descriptor.proto (provided with protobuf's library.)
@@ -58,7 +57,7 @@
   private final ModelNodes nodes;
   private final XtextResource resource;
 
-  @Inject public ProtoDescriptor(IParser parser, URI descriptorLocation, ModelNodes nodes) {
+  public ProtoDescriptor(IParser parser, URI descriptorLocation, ModelNodes nodes) {
     this.nodes = nodes;
     addOptionTypes();
     InputStreamReader reader = null;
@@ -71,7 +70,6 @@
       resolveLazyCrossReferences(resource, NullImpl);
       initContents();
     } catch (Throwable t) {
-      t.printStackTrace();
       throw new IllegalStateException("Unable to parse descriptor.proto", t);
     } finally {
       close(reader);
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptorProvider.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptorProvider.java
index 94c7523..0fc5ff2 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptorProvider.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptorProvider.java
@@ -54,15 +54,19 @@
   }
 
   private URI findDescriptorLocation() {
-    String uri = null;
     IConfigurationElement[] config = registry.getConfigurationElementsFor(EXTENSION_ID);
+    if (config == null) return defaultDescriptor();
     for (IConfigurationElement e : config) {
       String path = e.getAttribute("path");
       if (isEmpty(path)) continue;
-      uri = "platform:/plugin/" + e.getContributor().getName() + "/" + path;
-      break;
+      StringBuilder uri = new StringBuilder();
+      uri.append("platform:/plugin/").append(e.getContributor().getName()).append("/").append(path);
+      return URI.createURI(uri.toString());
     }
-    if (uri == null) uri = "platform:/plugin/com.google.eclipse.protobuf/descriptor.proto";
-    return URI.createURI(uri);
+    return defaultDescriptor();
+  }
+  
+  private static URI defaultDescriptor() {
+    return URI.createURI("platform:/plugin/com.google.eclipse.protobuf/descriptor.proto");
   }
 }
