MongoDB JUnit Test

This utility will bootstrap a mongo database during unit testing.

License

License

Categories

Categories

MongoDB Data Databases JUnit Unit Testing
GroupId

GroupId

io.fares.junit.mongodb
ArtifactId

ArtifactId

mongodb-junit-test
Last Version

Last Version

1.1.0
Release Date

Release Date

Type

Type

jar
Description

Description

MongoDB JUnit Test
This utility will bootstrap a mongo database during unit testing.
Project URL

Project URL

https://github.com/bertramn/mongodb-junit-test
Source Code Management

Source Code Management

https://github.com/bertramn/mongodb-junit-test.git

Download mongodb-junit-test

How to add to project

<!-- https://jarcasting.com/artifacts/io.fares.junit.mongodb/mongodb-junit-test/ -->
<dependency>
    <groupId>io.fares.junit.mongodb</groupId>
    <artifactId>mongodb-junit-test</artifactId>
    <version>1.1.0</version>
</dependency>
// https://jarcasting.com/artifacts/io.fares.junit.mongodb/mongodb-junit-test/
implementation 'io.fares.junit.mongodb:mongodb-junit-test:1.1.0'
// https://jarcasting.com/artifacts/io.fares.junit.mongodb/mongodb-junit-test/
implementation ("io.fares.junit.mongodb:mongodb-junit-test:1.1.0")
'io.fares.junit.mongodb:mongodb-junit-test:jar:1.1.0'
<dependency org="io.fares.junit.mongodb" name="mongodb-junit-test" rev="1.1.0">
  <artifact name="mongodb-junit-test" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.fares.junit.mongodb', module='mongodb-junit-test', version='1.1.0')
)
libraryDependencies += "io.fares.junit.mongodb" % "mongodb-junit-test" % "1.1.0"
[io.fares.junit.mongodb/mongodb-junit-test "1.1.0"]

Dependencies

compile (3)

Group / Artifact Type Version
org.slf4j : slf4j-api jar 1.7.25
org.mongodb : mongo-java-driver jar 3.9.1
de.flapdoodle.embed : de.flapdoodle.embed.mongo jar 2.1.1

provided (3)

Group / Artifact Type Version
org.junit.jupiter : junit-jupiter-api jar 5.3.2
org.junit.vintage : junit-vintage-engine jar 5.3.2
org.junit.platform : junit-platform-commons jar 1.3.2

Project Modules

There are no modules declared in this project.

MongoDB JUnit Test Rule

This library contains a simple JUnit rule that will bootstrap an embedded mongodb during junit integration test execution.

The library will use the embedded mongo framework from flapdoodle and will start a mongodb instance on localhost and port 27099. The port, host ip and mongodb version can be configured via fluent methods on MongoRule.

Simple Example for JUnit4:

import static org.junit.Assert.*;
import org.junit.Rule;
import org.junit.Test;

import com.mongodb.MongoClient;

public class SomeTestWithMongoDB {

  @Rule
  // this will start and stop mongodb for every test
  public MongoRule mongo = new MongoRule();

  @Test
  public void testSomethingWithMongoRule() {

    MongoClient client = mongo.getMongoClient();
    assertNotNull(client);
    // whatever needs to be done in mongo using the provided monog client

  }

  @Test
  @WithoutMongo
  public void testSomethingWithoutMongoRule() {

    MongoClient client = mongo.getMongoClient();
    assertNull(client);
    // whatever needs to be done without mongo

  }

}

Simple Example for JUnit5 starting a MongoDB for All Tests (only once):

public class SomeTestWithMongoDB {

  @RegisterExtension
  static MongoForAllExtension mongo = MongoForAllExtension.defaultMongo();

  @BeforeEach
  void setupCollection() {
    MongoDatabase db = mongo.getMongoClient().getDatabase(MongoExtension.UNIT_TEST_DB);
    // e.g. drop a collection taht was used during prior test
    db.getCollection("TestCollection").drop();
  }

  @Test
  public void testSomethingWithMongoDB() {
    MongoClient client = mongo.getMongoClient();
    // whatever needs to be done in mongo using the provided mongo client
  }

  @Test
  public void testSomethingElseWithSameMongoDB() {
    MongoClient client = mongo.getMongoClient();
    // whatever needs to be done in mongo using the provided mongo client
  }

}

Simple Example for JUnit5 starting a MongoDB for Each Test (one per test case - slow):

public class SomeTestWithMongoDB {

  @RegisterExtension
  MongoForEachExtension mongo = MongoForEachExtension.defaultMongo();

  @BeforeEach
  void setupCollection() {
    if (mongo.isStarted()) {
      MongoDatabase db = mongo.getMongoClient().getDatabase(MongoExtension.UNIT_TEST_DB);
      // setup collection for test
    }
  }

  @Test
  public void testSomethingWithMongoRule() {
    MongoClient client = mongo.getMongoClient();
    // whatever needs to be done in mongo using the provided mongo client
  }

  @Test
  @WithoutMongo
  public void testSomethingWithoutMongoRule() {
    // whatever needs to be done without mongo
  }
  
}

Versions

Version
1.1.0
1.0.3
1.0.2
1.0.1
1.0.0