2015-01-13 1 views
1

Я попытался создать тест JUnit для BPMN Activiti BPMN (щелчок правой кнопкой мыши и создание его). Когда я запускаю тест JUnit, я становлюсь ниже исключения. Класс, который указан как не найден, находится в activiti-engine-5.14.jar. Я попытался найти и нашел предложение использовать JUnit 4.11. Я уже использую это, как указано в pom.xml ниже. Новичок в activiti, пожалуйста, дайте мне знать, если что-то нужно изменить, чтобы избежать исключения.java.lang.ClassNotFoundException: org.activiti.engine.test.ActivitiRule

тест JUnit класс:

package org.activiti.designer.test; 

import static org.junit.Assert.*; 

import java.util.HashMap; 
import java.util.Map; 
import java.io.FileInputStream; 

import org.activiti.engine.RepositoryService; 
import org.activiti.engine.RuntimeService; 
import org.activiti.engine.runtime.ProcessInstance; 
import org.activiti.engine.test.ActivitiRule; 
import org.junit.Rule; 
import org.junit.Test; 

public class TestSimpleLeaveProcess { 

    private String filename = "C:/Users/arun.bc/activitiws/activiti-sample/src/main/resources/diagrams/SimpleLeaveProcess.bpmn"; 

    @Rule 
    public ActivitiRule activitiRule = new ActivitiRule(); 

    @Test 
    public void startProcess() throws Exception { 
     RepositoryService repositoryService = activitiRule 
       .getRepositoryService(); 
     repositoryService 
       .createDeployment() 
       .addInputStream("SimpleLeaveProcess.bpmn.xml", 
         new FileInputStream(filename)).deploy(); 
     RuntimeService runtimeService = activitiRule.getRuntimeService(); 
     Map<String, Object> variableMap = new HashMap<String, Object>(); 
     variableMap.put("Empname", "Activiti"); 
     ProcessInstance processInstance = runtimeService 
       .startProcessInstanceByKey("leaveProcess", variableMap); 
     assertNotNull(processInstance.getId()); 
     System.out.println("id " + processInstance.getId() + " " 
       + processInstance.getProcessDefinitionId()); 
    } 
} 

Maven тест журналы

------------------------------------------------------------------------------- 
Test set: org.activiti.designer.test.TestSimpleLeaveProcess 
------------------------------------------------------------------------------- 
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec <<< FAILURE! 
initializationError(org.activiti.designer.test.TestSimpleLeaveProcess) Time elapsed: 0 sec <<< ERROR! 
java.lang.NoClassDefFoundError: Lorg/activiti/engine/test/ActivitiRule; 
    at java.lang.Class.getDeclaredFields0(Native Method) 
    at java.lang.Class.privateGetDeclaredFields(Class.java:2317) 
    at java.lang.Class.getDeclaredFields(Class.java:1762) 
    at org.junit.runners.model.TestClass.<init>(TestClass.java:49) 
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:75) 
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:57) 
    at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26) 
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:51) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110) 
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) 
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68) 
Caused by: java.lang.ClassNotFoundException: org.activiti.engine.test.ActivitiRule 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    ... 23 more 

BPMN XML File

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test"> 
    <process id="myProcess" name="My process" isExecutable="true"> 
    <startEvent id="startevent1" name="Start"> 
     <extensionElements> 
     <activiti:formProperty id="Empname" name="Empname" type="string"></activiti:formProperty> 
     </extensionElements> 
    </startEvent> 
    <scriptTask id="scripttask1" name="Script Task" scriptFormat="groovy" activiti:autoStoreVariables="false"> 
     <script>out:println"ApplyforLeaveby"+Empname;</script> 
    </scriptTask> 
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="scripttask1"></sequenceFlow> 
    <userTask id="usertask1" name="H.R Approval" activiti:assignee="kermit"></userTask> 
    <sequenceFlow id="flow2" sourceRef="scripttask1" targetRef="usertask1"></sequenceFlow> 
    <endEvent id="endevent1" name="End"></endEvent> 
    <sequenceFlow id="flow3" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow> 
    </process> 
    <bpmndi:BPMNDiagram id="BPMNDiagram_myProcess"> 
    <bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess"> 
     <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1"> 
     <omgdc:Bounds height="35.0" width="35.0" x="80.0" y="150.0"></omgdc:Bounds> 
     </bpmndi:BPMNShape> 
     <bpmndi:BPMNShape bpmnElement="scripttask1" id="BPMNShape_scripttask1"> 
     <omgdc:Bounds height="55.0" width="105.0" x="160.0" y="140.0"></omgdc:Bounds> 
     </bpmndi:BPMNShape> 
     <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1"> 
     <omgdc:Bounds height="55.0" width="105.0" x="310.0" y="140.0"></omgdc:Bounds> 
     </bpmndi:BPMNShape> 
     <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1"> 
     <omgdc:Bounds height="35.0" width="35.0" x="460.0" y="150.0"></omgdc:Bounds> 
     </bpmndi:BPMNShape> 
     <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"> 
     <omgdi:waypoint x="115.0" y="167.0"></omgdi:waypoint> 
     <omgdi:waypoint x="160.0" y="167.0"></omgdi:waypoint> 
     </bpmndi:BPMNEdge> 
     <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"> 
     <omgdi:waypoint x="265.0" y="167.0"></omgdi:waypoint> 
     <omgdi:waypoint x="310.0" y="167.0"></omgdi:waypoint> 
     </bpmndi:BPMNEdge> 
     <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3"> 
     <omgdi:waypoint x="415.0" y="167.0"></omgdi:waypoint> 
     <omgdi:waypoint x="460.0" y="167.0"></omgdi:waypoint> 
     </bpmndi:BPMNEdge> 
    </bpmndi:BPMNPlane> 
    </bpmndi:BPMNDiagram> 
</definitions> 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>sanjus</groupId> 
    <artifactId>activiti-sample</artifactId> 
    <version>1.0</version> 
    <name>activiti-sample</name> 
    <description>activiti-sample</description> 
    <properties> 
     <activiti-version>5.14</activiti-version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>org.activiti</groupId> 
      <artifactId>activiti-engine</artifactId> 
      <version>${activiti-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.activiti</groupId> 
      <artifactId>activiti-spring</artifactId> 
      <version>${activiti-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-all</artifactId> 
      <version>2.0.4</version> 
     </dependency> 
     <dependency> 
      <groupId>com.h2database</groupId> 
      <artifactId>h2</artifactId> 
      <version>1.3.168</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-jdk14</artifactId> 
      <version>1.7.2</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <inherited>true</inherited> 
       <configuration> 
        <classpathContainers> 
         <classpathContainer>org.eclipse.jdt.USER_LIBRARY/Activiti Designer 
          Extensions</classpathContainer> 
        </classpathContainers> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

ответ

1

Я был в состоянии решить NoClassDefFoundError (java.lang.NoClassDefFoundError: Lorg/activiti/engine/test/ActivitiRule) указанной выше заменой Activiti версии 5.14 с 5.17.0 в pom.xml.

<properties> 
    <activiti-version>5.17.0</activiti-version> 
    </properties>