diff --git a/gora-mongodb/pom.xml b/gora-mongodb/pom.xml
index c68b13e..e3c9566 100644
--- a/gora-mongodb/pom.xml
+++ b/gora-mongodb/pom.xml
@@ -52,7 +52,7 @@
   <properties>
     <osgi.import>*</osgi.import>
     <osgi.export>org.apache.gora.mongodb*;version="${project.version}";-noimport:=true</osgi.export>
-    <mongo.embed.version>2.0.0</mongo.embed.version>
+    <mongo.embed.version>2.2.0</mongo.embed.version>
   </properties>
 
   <build>
diff --git a/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore26.java b/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore26.java
deleted file mode 100644
index 8a1f4d3..0000000
--- a/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore26.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.gora.mongodb.store;
-
-import de.flapdoodle.embed.mongo.distribution.Version;
-import org.apache.gora.mongodb.GoraMongodbTestDriver;
-
-/**
- * Perform {@link TestMongoStore} tests on MongoDB 2.6.x server.
- */
-public class TestMongoStore26 extends TestMongoStore {
-
-  static {
-    setTestDriver(new GoraMongodbTestDriver(Version.Main.V2_6));
-  }
-}
diff --git a/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore30.java b/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore30.java
deleted file mode 100644
index d467ff5..0000000
--- a/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore30.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.gora.mongodb.store;
-
-import de.flapdoodle.embed.mongo.distribution.Version;
-import org.apache.gora.mongodb.GoraMongodbTestDriver;
-
-/**
- * Perform {@link TestMongoStore} tests on MongoDB 3.0.x server.
- */
-public class TestMongoStore30 extends TestMongoStore {
-
-  static {
-    setTestDriver(new GoraMongodbTestDriver(Version.Main.V3_0));
-  }
-}
diff --git a/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore32.java b/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore36.java
similarity index 84%
rename from gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore32.java
rename to gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore36.java
index dde1f7e..7b5d0aa 100644
--- a/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore32.java
+++ b/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore36.java
@@ -21,11 +21,11 @@
 import org.apache.gora.mongodb.GoraMongodbTestDriver;
 
 /**
- * Perform {@link TestMongoStore} tests on MongoDB 3.2.x server.
+ * Perform {@link TestMongoStore} tests on MongoDB 3.6.x server.
  */
-public class TestMongoStore32 extends TestMongoStore {
+public class TestMongoStore36 extends TestMongoStore {
 
   static {
-    setTestDriver(new GoraMongodbTestDriver(Version.Main.V3_2));
+    setTestDriver(new GoraMongodbTestDriver(Version.Main.V3_6));
   }
 }
diff --git a/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore32.java b/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore40.java
similarity index 84%
copy from gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore32.java
copy to gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore40.java
index dde1f7e..6cc9163 100644
--- a/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore32.java
+++ b/gora-mongodb/src/test/java/org/apache/gora/mongodb/store/TestMongoStore40.java
@@ -21,11 +21,11 @@
 import org.apache.gora.mongodb.GoraMongodbTestDriver;
 
 /**
- * Perform {@link TestMongoStore} tests on MongoDB 3.2.x server.
+ * Perform {@link TestMongoStore} tests on MongoDB 4.0.x server.
  */
-public class TestMongoStore32 extends TestMongoStore {
+public class TestMongoStore40 extends TestMongoStore {
 
   static {
-    setTestDriver(new GoraMongodbTestDriver(Version.Main.V3_2));
+    setTestDriver(new GoraMongodbTestDriver(Version.Main.V4_0));
   }
 }
