> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Testing

export const productName = "Atoti FRTB";

export const coreProductName = "Atoti Server";

This section explains how to set up and run integration tests for
bookmarks, provides samples for custom integration tests and outline of
unit tests.

There are a number of (unit and integration) tests across the project in
each of the modules.

## Integration Tests

By default, the integration tests will not get executed when you build
the project. The reason for this is because it will increase the build
time significantly.

There is a separate maven profile called `IT` that you can run with the
following command when you want to execute the integration tests:

  `mvn install -P IT`.

### Bookmark Tests

{productName}  uses a test harness library which has been
developed to regression test {coreProductName} projects. This library enables
us to start up a cube, execute MDX queries and assert the values match.

By default, the {coreProductName} instance will load data
from */src/test/resources/data*.

#### Creating Bookmark (MDX) Tests

1. Start up your {coreProductName} instance.
2. Run the
   class `com.activeviam.back.test.bookmark.creator.BookmarkTestCreatorRunner` -
   This will create a set of files in the folder with MDX queries
   in */src/test/resources/test-bookmarks*. All of the MDX queries
   will be stored in files ending with *.query*.
3. Stop your {coreProductName} instance.

#### Creating/Replacing Expected Results

Run the class `com.activeviam.back.test.ReferenceRegressionTestIT` as a
Java application - This will startup an {coreProductName} instance, execute
the queries in */src/test/resources/test-bookmarks* and store the
results in files ending with *.csv*.

#### Executing Bookmark (MDX) Tests

Run the class `com.activeviam.back.test.ReferenceRegressionTestIT` as a
JUnit test - This will startup an {coreProductName} instance, execute the
queries in the files ending with .*query* and assert the results against
the corresponding file ending with .*csv*.

## Custom Integration Tests

Integration tests can be defined fully in code, this includes things
such as sample data being injected into the {coreProductName} instance, the
query being executed together with the expected values.

There are a number of sample integration tests in the reference
implementation that have been defined as examples. An abstract class is
available as a starting point for integration tests being defined
manually. See the class `com.activeviam.frtb.it.AIntegrationTestIT`.

Example implementations of this class can be found in the reference
implementation.

## Unit Tests

By default, unit tests are executed when you run `mvn install`. Some
example tests can be found in the reference implementation where
datastores have been created and mocked in order to test certain
functionalities.
