Title | Added | Last reviewed |
---|---|---|
How to run SDK's integration tests |
v3.0.0 |
2021-02-09 |
Running the integration tests of a project generated from the Alfresco SDK 4.x archetypes is pretty easy. Let's distinguish different cases of executing the integration tests.
If you want to run the integration tests from the command line you'll have to use the utility scripts provided by all the projects generated from the
archetypes. These are run.sh
if you're on Unix systems or run.bat
if you're on Windows systems.
If you want to spin up a new dockerised environment with ACS, run the integration tests and stop that environment, you'll use the build_test
goal:
$ ./run.sh build_test
If you want all your previous data in the docker environment to be wiped out before the execution of the integration tests, remember to call the purge
goal
before the build_test
goal:
$ ./run.sh purge
$ ./run.sh build_test
The build_test
goal will execute the next list of tasks:
- Stop any previous execution of the dockerised environment.
- Compile all the source code.
- Rebuild the custom Docker images of the project.
- Start a new dockerised environment.
- Execute the integration tests.
- Show the logs of the docker containers during the tests execution.
- Stop the dockerised environment.
If your dockerised environment is already started and you simply want to execute the integration tests against that existing ACS instance, then use the test
goal:
$ ./run.sh test
If you want to run your integration tests against an ACS instance not exposed in http://localhost:8080/alfresco
you'll need to modify a maven property
before executing the tests.
The maven property for the test ACS instance endpoint location is acs.endpoint.path
and you can configure it in the pom.xml
file in the root folder of your
project:
<properties>
...
<test.acs.endpoint.path>http://192.168.99.100:8080/alfresco</test.acs.endpoint.path>
..
</properties>
This parameter is specially important if you're running your dockerised environment using Docker Toolbox instead of
Docker Desktop. If that is the case, then the Docker container exposed ports are not mapped in the hosted
machine as localhost
but as an assigned IP address (i.e. 192.168.99.100
).
If your project is available in Eclipse, you can easily run one or more of the integration tests directly from your IDE.
To run the integration tests:
-
In order to properly execute the integration tests the dockerised environment must be already up and running with IT support. So, before executing the tests you must run the
build_start_it_supported
or thestart
goal of therun
script. -
Open the project using the IDE.
-
Select the classes for the integration tests (either one, some, or the whole package).
-
Right click and select
Run As ...
, then clickJUnit Test
.
Once the tests have completed (typically, after a few seconds), the results are presented.
When using an IDE, the source code related to the integration tests is the one deployed directly on the platform side. This means that an update in the code for the Java classes will be included when you run the integration tests if and only if they are deployed in the platform. To avoid stopping/starting Alfresco Content Services with every change, use hot reloading as the only way to deploy the new version of the Java classes. For more details, see JRebel / HotSwapAgent Hot reloading.
If your project is available in IntelliJ IDEA, you can easily run one or more of the integration tests directly from your IDE.
To run the integration tests:
-
In order to properly execute the integration tests the dockerised environment must be already up and running with IT support. So, before executing the tests you must run the
build_start_it_supported
or thestart
goal of therun
script. -
Open the project using the IDE.
-
Select the classes for the integration tests (either one, some, or the whole package).
-
Right click and select
Run Tests
.
Once the tests have completed (typically, after a few seconds), the results are presented.
When using an IDE, the source code related to the integration tests is the one deployed directly on the platform side. This means that an update in the code for the Java classes will be included when you run the integration tests if and only if they are deployed in the platform. To avoid stopping/starting Alfresco Content Services with every change, use hot reloading as the only way to deploy the new version of the Java classes. For more details, see JRebel / HotSwapAgent Hot reloading.