Dataset Generator Utility

While it’s possible to generate the seeding and assertion JSON files by hand, it’s much easier to use the mongoUnit dataset generator utility.

The dataset generator utility is a just a JAR that you can run inside of an IDE or on the command line.

Download the mongoUnit JSON generator utility.

Process

Step 1: Populate the database with some data.

You can do this by running your code and then examining the database (either on the command line or with a tool like MongoDB Compass ).

The data doesn’t have to be perfect. As long as the bulk of it is the way you want it, you can edit some of the details later by hand.

Step 2: Run the following command:

$ java -jar mongounit-3.1.2-jar-with-dependencies.jar -dbUri=mongodb://localhost:27017/yourDbName

**************************
**** JSON was written to /.../output.json
**************************
$ 

If you are running your db locally, you can skip having to specify the dbUri and just specify the dbName. The base URI will be assumed to be mongodb://localhost:27017/.

$ java -jar mongounit-3.1.2-jar-with-dependencies.jar -dbName=yourDbName

**************************
**** JSON was written to /.../output.json
**************************

You can now rename/edit and place the output.json into your source tree.

If you run the same command without giving it any arguments, it will report and error and will list all of the available options:

$ java -jar mongounit-3.1.2-jar-with-dependencies.jar 
**** ERROR: -dbUri must be specified.
**************************
* Usage: 
* java -jar mongounit-x.x.x-jar-with-dependencies.jar .jar -dbUri=mongodb://localhost:27017/test_db -collectionNames=col1,col2 -output=./output.json
*
* Individual arguments must not have any spaces between '=' and argument value or even in the argument value itself.
* '-dbUri' (required unless '-dbName' is provided) must be a valid MongoDB URI (must include db name). Must start with 'mongodb'. Can contain username/password.
* '-dbName' (required unless '-dbUri' is provided) must be a valid MongoDB DB name. Assumes base URI to be 'mongodb://localhost:27017/'.
* '-output' (optional) is an absolute or relative path to the file that should be created with the dataset output in JSON format. An existing file with the same name will be erased. If '-output' is specified, it MUST end with '.json'. Defaults to './output.json' if '-output' is omitted.
* '-collectionNames' (optional) comma separated list of collection to limit dataset generation to. No spaces allowed between collection names. Defaults to all collections in the database.
* '-preserveBsonTypes' (optional) comma separated list of BSON types to generate explicit MongoUnit BSON type specification for. The string types are enum names from the org.bson.BsonType. If not specified, defaults to OBJECT_ID and DATE_TIME.
* '-mongoUnitValueFieldNameIndicator' (optional) field name to use in developer JSON files to signify that a document is a representation of a special MongoUnit value. If not specified, defaults to $$.
**************************

Dataset generator options

The following table presents all of the commandline arguments the dataset generator utility is able to respond to.

Option Required? Description
-dbUri yes
(unless dbName is provided)
be a valid MongoDB URI (must include db name). Must start with ‘mongodb’. Can contain username/password.
-dbName yes
(unless dbUri is provided)
be a valid MongoDB DB name. Assumes base URI to be mongodb://localhost:27017/.
-output no An absolute or relative path to the file that should be created with the dataset output in JSON format. An existing file with the same name will be erased. If -output is specified, it MUST end with .json. Defaults to ./output.json if -output is omitted.
-collectionNames no Comma separated list of collection to limit dataset generation to. No spaces allowed between collection names. Defaults to all collections in the database.
-preserveBsonTypes no comma separated list of BSON types to generate explicit mongoUnit BSON type specification for. The string types are enum names from the org.bson.BsonType. If not specified, defaults to OBJECT_ID and DATE_TIME.
-mongoUnitValueFieldNameIndicator no Field name to use in developer JSON files to signify that a document is a representation of a special mongoUnit value. If not specified, defaults to $$.