diff --git a/net/api/pom.xml b/net/api/pom.xml
index f74d08e..79737d3 100644
--- a/net/api/pom.xml
+++ b/net/api/pom.xml
@@ -16,4 +16,11 @@
 
     <description>ONOS network control API</description>
 
+    <dependencies>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava-testlib</artifactId>
+        </dependency>
+    </dependencies>
+
 </project>
diff --git a/net/api/src/main/java/org/onlab/onos/net/DeviceId.java b/net/api/src/main/java/org/onlab/onos/net/DeviceId.java
index 124fa96..6f4cff2 100644
--- a/net/api/src/main/java/org/onlab/onos/net/DeviceId.java
+++ b/net/api/src/main/java/org/onlab/onos/net/DeviceId.java
@@ -7,6 +7,7 @@
  */
 public class DeviceId extends ElementId {
 
+    // TODO: Discuss whether we should just use ElementId for Device and Host alike
     /**
      * Creates a device id using the supplied URI.
      *
diff --git a/net/api/src/test/java/org/onlab/onos/net/DeviceIdTest.java b/net/api/src/test/java/org/onlab/onos/net/DeviceIdTest.java
new file mode 100644
index 0000000..f373678
--- /dev/null
+++ b/net/api/src/test/java/org/onlab/onos/net/DeviceIdTest.java
@@ -0,0 +1,20 @@
+package org.onlab.onos.net;
+
+import com.google.common.testing.EqualsTester;
+import org.junit.Test;
+
+/**
+ * Test of the provider identifier.
+ */
+public class DeviceIdTest extends ElementIdTest {
+
+    @Test
+    public void basics() {
+        new EqualsTester()
+                .addEqualityGroup(new DeviceId(uri("of:foo")),
+                                  new DeviceId(uri("of:foo")))
+                .addEqualityGroup(new DeviceId(uri("of:bar")))
+                .testEquals();
+    }
+
+}
diff --git a/net/api/src/test/java/org/onlab/onos/net/ElementIdTest.java b/net/api/src/test/java/org/onlab/onos/net/ElementIdTest.java
new file mode 100644
index 0000000..4de68dd
--- /dev/null
+++ b/net/api/src/test/java/org/onlab/onos/net/ElementIdTest.java
@@ -0,0 +1,30 @@
+package org.onlab.onos.net;
+
+import com.google.common.testing.EqualsTester;
+import org.junit.Test;
+
+import java.net.URI;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test of the provider identifier.
+ */
+public class ElementIdTest {
+
+    public static URI uri(String str) {
+        return URI.create(str);
+    }
+
+    @Test
+    public void basics() {
+        new EqualsTester()
+                .addEqualityGroup(new ElementId(uri("of:foo")),
+                                  new ElementId(uri("of:foo")))
+                .addEqualityGroup(new ElementId(uri("of:bar")))
+                .testEquals();
+        assertEquals("wrong uri", uri("ofcfg:foo"),
+                     new ElementId(uri("ofcfg:foo")).uri());
+    }
+
+}
diff --git a/net/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderTest.java b/net/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderTest.java
new file mode 100644
index 0000000..745aebc
--- /dev/null
+++ b/net/api/src/test/java/org/onlab/onos/net/provider/AbstractProviderTest.java
@@ -0,0 +1,18 @@
+package org.onlab.onos.net.provider;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Test of the base provider implementation.
+ */
+public class AbstractProviderTest {
+
+    @Test
+    public void basics() {
+        ProviderId id = new ProviderId("foo.bar");
+        TestProvider provider = new TestProvider(id);
+        assertEquals("incorrect id", id, provider.id());
+    }
+}
diff --git a/net/api/src/test/java/org/onlab/onos/net/provider/ProviderIdTest.java b/net/api/src/test/java/org/onlab/onos/net/provider/ProviderIdTest.java
new file mode 100644
index 0000000..1c05507
--- /dev/null
+++ b/net/api/src/test/java/org/onlab/onos/net/provider/ProviderIdTest.java
@@ -0,0 +1,19 @@
+package org.onlab.onos.net.provider;
+
+import com.google.common.testing.EqualsTester;
+import org.junit.Test;
+
+/**
+ * Test of the provider identifier.
+ */
+public class ProviderIdTest {
+
+    @Test
+    public void basics() {
+        new EqualsTester()
+                .addEqualityGroup(new ProviderId("foo"), new ProviderId("foo"))
+                .addEqualityGroup(new ProviderId("bar"))
+                .testEquals();
+    }
+
+}
diff --git a/net/api/src/test/java/org/onlab/onos/net/provider/TestProvider.java b/net/api/src/test/java/org/onlab/onos/net/provider/TestProvider.java
new file mode 100644
index 0000000..785577a
--- /dev/null
+++ b/net/api/src/test/java/org/onlab/onos/net/provider/TestProvider.java
@@ -0,0 +1,17 @@
+package org.onlab.onos.net.provider;
+
+/**
+ * Test provider fixture.
+ */
+public class TestProvider extends AbstractProvider {
+
+    /**
+     * Creates a provider with the supplier identifier.
+     *
+     * @param id provider id
+     */
+    protected TestProvider(ProviderId id) {
+        super(id);
+    }
+
+}
diff --git a/pom.xml b/pom.xml
index 5abbfef..0bfa83b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,14 @@
                 <version>17.0</version>
             </dependency>
 
+            <dependency>
+                <groupId>com.google.guava</groupId>
+                <artifactId>guava-testlib</artifactId>
+                <version>17.0</version>
+                <scope>test</scope>
+            </dependency>
+
+
             <!-- Web related -->
             <dependency>
                 <groupId>com.sun.jersey</groupId>
