Выполнение теста JUnit для коллекции MongoDB с использованием Maven
MongoDB — это универсальная база данных NoSQL, которая широко используется в индустрии программного обеспечения. Везде, где нет необходимости в строгих отношениях реляционной базы данных, а также если есть вероятность частого получения документа, всегда лучше использовать MongoDB. В этой статье рассмотрим способы
- Подключение к MongoDB,
- Создание коллекции,
- Вставка документа и проверка вставленных данных с помощью JUnit
- Обновите документ и проверьте обновленные данные с помощью JUNIT.
В качестве примера проекта выполняется вся операция. У нас может быть это как базовый проект, и это делается как проект maven.
Пример проекта
Структура проекта:
Это проект, управляемый maven, и, следовательно, давайте начнем с
пом.xml
XML
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 <modelVersion>4.0.0</modelVersion> <groupId>com.gfg.mongodbtesting</groupId> <artifactId>mongodbTesting</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>mongodbTesting</name> <dependencies> <!-- mongodb dependency --> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>2.10.1</version> </dependency> <!-- junit dependency --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.1</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <configuration> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> </configuration> </plugin> </plugins> </build> </project> |
Давайте посмотрим на важный java-файл, который выполняет все 4 шага, как указано выше.
JUnitTestingOfMongoDBCollection.java
В этом файле
- Установление соединения с MongoDB выполнено
- MongoDB довольно удобен для пользователя. Если базы данных нет, она создается автоматически
/**** Connect to MongoDB ****/
// Since 2.10.0, uses MongoClient
MongoClient mongo = new MongoClient("localhost", 27017);
/**** Get database ****/
// if database doesn"t exists, MongoDB will create it for you
DB db = mongo.getDB("geeksforgeeks");Точно так же, если коллекция не существует, она автоматически создается с помощью приведенного ниже кода.
/**** Get collection / table from "geeksforgeeks" ****/
// if collection doesn"t exists, MongoDB will create it for you
DBCollection table = db.getCollection("authors");К этому моменту времени,
- Создана именованная база данных 'geeksforgeeks'
- создается именованная коллекция "авторы"
Теперь давайте вставим документ и проверим его. После вставки мы можем видеть, что «имя», «возраст», «технология» и «createdDate» — это созданные столбцы, и их соответствующие значения проверяются. Во время обновления документа дополнительно добавляется новый столбец под названием «количество сообщений», и такая возможность легко реализуема в MongoDB. Давайте проверим то же самое. Весь набор кода приведен ниже.
Java
import java.util.Date; // Following imports are necessary for JUNITimport static org.junit.Assert.assertEquals;import org.junit.Test; // Following imports are necessary for MongoDBimport java.net.UnknownHostException;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;import com.mongodb.MongoClient;import com.mongodb.MongoException; public class JUnitTestingOfMongoDBCollection { @Test public void testInsertedAndUpdatedDocument() throws Exception { try { /**** Connect to MongoDB ****/ // Since 2.10.0, uses MongoClient MongoClient mongo = new MongoClient("localhost", 27017); /**** Get database ****/ // if database doesn"t exists, MongoDB will create it for you DB db = mongo.getDB("geeksforgeeks"); /**** Get collection / table from "geeksforgeeks" ****/ // if collection doesn"t exists, MongoDB will create it for you DBCollection table = db.getCollection("authors"); /**** Insert ****/ // create a document to store key and value BasicDBObject document = new BasicDBObject(); document.put("name", "author1"); document.put("age", 30); document.put("technology", "java,mongodb"); document.put("createdDate", new Date()); table.insert(document); /**** Find and display ****/ BasicDBObject searchQuery = new BasicDBObject(); searchQuery.put("name", "author1"); DBCursor cursor = table.find(searchQuery); // While displaying let us check // with assert statements as well while (cursor.hasNext()) { DBObject object = cursor.next(); // Checking whether inserted name is author1 assertEquals("author1", object.get("name").toString()); // Checking whether inserted age is 30 assertEquals(30, Integer.parseInt(object.get("age").toString())); // Checking whether inserted technology is java,mongodb assertEquals("java,mongodb", object.get("technology").toString()); } /**** Update ****/ // search document where name="author1" // and update it with new values BasicDBObject query = new BasicDBObject(); query.put("name", "author1"); BasicDBObject newDocument = new BasicDBObject(); // changing the technology column value newDocument.put("technology", "java,.net,mongodb"); // additionally adding a new column. // This is the advantage of mongodb. // We no need to have concrete structure // from the beginning as like RDBMS database newDocument.put("numberofposts", "10"); BasicDBObject updateObj = new BasicDBObject(); updateObj.put("$set", newDocument); // This way we can update the document table.update(query, updateObj); /**** Find and display ****/ BasicDBObject searchQuery2 = new BasicDBObject().append("name", "author1"); DBCursor cursor2 = table.find(searchQuery2); // Check the same as well // Now we can check whether the technology // got changed to java,.net,mongodb // and also numberofposts to 10 while (cursor2.hasNext()) { DBObject object = cursor2.next(); assertEquals("author1", object.get("name").toString()); assertEquals(30, Integer.parseInt(object.get("age").toString())); assertEquals("java,.net,mongodb", object.get("technology").toString()); assertEquals("10", object.get("numberofposts").toString()); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } }} |
Мы можем выполнить тестирование через ниже
Выход:
После выполнения всей программы давайте сравним данные MongoDB в бэкенде
Вывод
MongoDB — очень гибкая универсальная база данных NoSQL. Мы можем легко подключить MongoDB через java, вставить и обновить документ, а также протестировать его через JUNIT, написав код, как указано в примере проекта.