@AssertMatchesDataset annotation specifies location(s) of a JSON-based file(s) with data to match the state of the database with.
It can be used on a class, on a method, or in combination of the two, which would have a cumulative effect, i.e., the data pointed to by the method annotation would be added to the data pointed to by the class annotation.
There is also an option to trigger assertion with no additional dataset by setting this annotation’s
false. In such a case, previously set assertion datasets (if any at all) are used. This can be used to verify that nothing exists in the database or if the dataset is coming from
@SeedWithDataset annotation with the
reuseForAssertion set to
If neither the target test method nor its containing target test class is annotated with this annotation, no automatic assertion takes place.
Specifying this annotation on a class or a method without providing at least a single location should cause the mongoUnit framework to look for a default file named
methodName-expected.json (depending on the location of the annotation). The directory in which this file will be looked for depends on the
locationType property of the
@AssertMatchesDataset annotation. By default,
CLASSPATH_ROOT, the file will be looked for at the classpath root.
CLASS, the file will be looked for at the classpath root plus the package structure along with class name (or
name specified by the
@MongoUnitTest annotation), i.e., if the fully qualified name of the test class is
com.mytest.MyIT and this value is selected, the file will be searched for in the
/com/mytest/MyIT folder relative to the root of the classpath. If
@MongoUnitTest annotation specifies
test1, the file will be searched for in the
/com/mytest/test1 folder relative to the root of the classpath.
ABSOLUTE, the file will be looked for in the root directory, i.e .,
If the mongoUnit framework fails to find any of the dataset file(s), an exception will be thrown.
If the desired assertion state is an empty dataset, set
additionalDataset = false and setting any other property on this annotation.
Specifying multiple locations has a cumulative seeding effect, i.e., the data is sequentially combined in the order specified in the
locations array before a match assertion is made.
The same cumulative effect applies if multiple
@AssertMatchesDataset annotations are applied to either a method or a class. If the
@AssertMatchesDataset annotation is applied at the class level and another one is applied at the method level, the class level datasets are taken and then combined with the method level datasets.