Umgebung
- Wildfly
- Camunda
- JUnit
Situation
Innerhalb einer JEE Anwendung verwenden wir Camunda. Beim erstellen von Tests werden mit
@Rule
public ProcessEngineRule processEngineRule = new ProcessEngineRule();
die ProcessEngine und die Dienste zur Verfügung gestellt. Wir starten einen Test mit
@Test
@Deployment(resources = {MyConstants.PROCESS_NAME)
public void executeProcessStraighForward() throws Exception {
....
und erhalten den Fehler
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML
document from class path resource [activiti.cfg.xml];
nested exception is java.io.FileNotFoundException: class path resource [activiti.cfg.xml]
cannot be opened because it does not exist
obwohl wir definitiv kein Spring verwenden (und auch nicht verwenden wollen 🙂 ).
Ursache
Die JUnit Rule findet keine camunda.cfg.xml und nutzt den Fallback activiti.cfg.xml. Dies geschieht aus Kompatibilitätsgründen und wurde beim Fork von Activiti integriert. Es muss also in den Ressourcen der Tests eine camunda.cfg.xml angelegt oder diese programmatisch erstellt werden
@Rule
public ProcessEngineRule rule = new ProcessEngineRule(this.createProcessEngineProgramatically());
...
protected ProcessEngine createProcessEngineProgramatically() {
StandaloneInMemProcessEngineConfiguration processEngineConfiguration = new
StandaloneInMemProcessEngineConfiguration();
processEngineConfiguration.setCustomPostBPMNParseListeners(Arrays.asList(new BpmnParseListener[]{new FoxFailedJobParseListener()}));
return processEngineConfiguration.buildProcessEngine();
}
Fragen und Anmerkungen
Für Fragen und Anmerkungen sendet mir gerne eine eMail. Wegen der DSGVO habe ich derzeit die Kommentarfunktionen abgestellt.