Repository navigation
Testing Guide
Piergiorgio Lucidi edited this page Oct 9, 2026
·
1 revision
The APS SDK offers a two-tier testing architecture:
- Embedded Unit Tests: Lightning-fast tests running inside a Spring test context with an in-memory H2 database.
- Containerized Integration Tests: End-to-end tests driving live Docker containers via the official generated OpenAPI/Swagger Java client.
Unit tests reside in:
aps-extensions-jar/src/test/java/org/alfresco/activiti/unit/tests/
Unit tests leverage @SpringJUnitConfig with ApplicationWhitelistingTestConfiguration.class to instantiate an embedded Activiti Engine connected to an in-memory H2 database.
package org.alfresco.activiti.unit.tests;
import static org.junit.jupiter.api.Assertions.*;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.alfresco.activiti.conf.ApplicationWhitelistingTestConfiguration;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
@SpringJUnitConfig(classes = ApplicationWhitelistingTestConfiguration.class)
public class FourEyesTest {
@Autowired
protected RuntimeService runtimeService;
@Autowired
protected TaskService taskService;
@Test
public void testProcessExecution() {
// 1. Deploy process definition from test classpath
// 2. Start process instance
ProcessInstance instance = runtimeService.startProcessInstanceByKey("fourEyesPrinciple");
assertNotNull(instance);
// 3. Query active task
Task task = taskService.createTaskQuery().singleResult();
assertEquals("Insert document", task.getName());
// 4. Complete task with outcome variable
taskService.complete(task.getId());
}
}mvn clean test
# or
./run.sh testIntegration tests reside in:
activiti-app-integration-tests/src/test/java/com/activiti/sdk/integrationtests/
They execute against the live Tomcat and PostgreSQL/Elasticsearch Docker containers running on http://localhost:8080.
Integration tests utilize the official generated Java Swagger/OpenAPI client:
-
Client Context:
com.activiti.sdk.client.ApiClientconfigured with target base URL, credentials (admin@app.activiti.com/admin). -
API Modules:
-
AboutApi: System status and version reporting. -
AppDefinitionsApi&RuntimeAppDefinitionsApi: App deployment, query, and deletion. -
ProcessDefinitionsApi&ProcessInstancesApi: Process orchestration. -
TasksApi&TaskFormsApi: Task queries and form completion.
-
-
testAboutApi: Verifies connectivity and confirms the APS edition name. -
testFourEyesApp:- Imports
target/aps-extensions-jar-*-App.zipinto the running container. - Starts a process instance with variables.
- Submits First Approval form via
completeTaskFormUsingPOST. - Submits Second Approval form.
- Verifies process reaches end state and cleans up deployed app definition.
- Imports
-
testCustomPrivateRestEndpoint: Confirms authenticated GET requests against custom endpoints (/api/enterprise/...). -
testCustomPublicRestEndpoint: Confirms unauthenticated GET requests against custom endpoints (/app/rest/...).
Using the automated run script (builds, starts, tests, shuts down):
./run.sh build_testUsing Maven lifecycle:
mvn clean verify-
Missing License Error: If tests fail with a licensing exception, confirm that
activiti.licexists in the root/license/directory. -
Port Conflict on 8080 or 5432: Ensure no other local Tomcat, PostgreSQL, or container instances occupy ports
8080,5432,9200, or5005. -
Container Startup Timeout: If the integration test starts before Tomcat is fully initialized, check Docker healthcheck status with
docker compose psto ensure all services reporthealthy.