Выполнение теста 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 JUNIT import static org.junit.Assert.assertEquals; import org.junit.Test; // Following imports are necessary for MongoDB import 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, написав код, как указано в примере проекта.