单元测试之Activiti(基于EmbeddedPostgres去加载Activiti核心类)

本文将基于EmbeddedPostgres去加载Activiti核心类,从而进行有关Activiti的Unit Test。有关EmbeddedPostgres的内容见上一篇文章:单元测试之EmbeddedPostgres

1、ActivitiConfig:配置Activiti核心类

 

import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.*;
import org.activiti.engine.test.ActivitiRule;
import org.activiti.spring.ProcessEngineFactoryBean;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.orm.jpa.JpaTransactionManager;

import javax.sql.DataSource;

@Slf4j
@TestConfiguration
public class ActivitiConfig {

    @Autowired
    private DataSource dataSource;

    @Autowired
    private JpaTransactionManager transactionManager;

    @Bean
    public SpringProcessEngineConfiguration processEngineConfiguration() {
        SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration();
        processEngineConfiguration.setDataSource(dataSource);
        processEngineConfiguration.setTransactionManager(transactionManager);
        processEngineConfiguration.setDatabaseSchemaUpdate("true");
        return processEngineConfiguration;
    }

    @Bean
    public ProcessEngineFactoryBean processEngineFactoryBean(SpringProcessEngineConfiguration processEngineConfiguration) {
        ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean();
        processEngineFactoryBean.setProcessEngineConfiguration(processEngineConfiguration);
        return processEngineFactoryBean;
    }

    @Bean
    public ProcessEngine processEngine(ProcessEngineFactoryBean processEngineFactoryBean) {
        try {
            return processEngineFactoryBean.getObject();
        } catch (Exception e) {
            log.error("create processEngine error", e);
            return null;
        }
    }

    @Bean
    public RepositoryService repositoryService(ProcessEngine processEngine) {
        return processEngine.getRepositoryService();
    }

    @Bean
    public RuntimeService runtimeService(ProcessEngine processEngine) {
        return processEngine.getRuntimeService();
    }

    @Bean
    public TaskService taskService(ProcessEngine processEngine) {
        return processEngine.getTaskService();
    }

    @Bean
    public HistoryService historyService(ProcessEngine processEngine) {
        return processEngine.getHistoryService();
    }

    @Bean
    public ManagementService managementService(ProcessEngine processEngine) {
        return processEngine.getManagementService();
    }

    @Bean
    public ActivitiRule activitiRule(ProcessEngine processEngine) {
        ActivitiRule activitiRule = new ActivitiRule();
        activitiRule.setProcessEngine(processEngine);
        return activitiRule;
    }
}

2、AbstractActivitiTest:Activiti测试基类

@Transactional
@DirtiesContext
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {JpaPersistConfig.class, ActivitiConfig.class},
        loader = AnnotationConfigContextLoader.class)
@Sql(scripts = {"classpath:schema-test.sql", "classpath:data-test.sql"},
        executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
public abstract class AbstractActivitiTest {

    @BeforeClass
    public static void beforeClass() {
        DBUtility.startDatabase();
    }

    @AfterClass
    public static void afterClass() throws Exception {
        DBUtility.shutdownDatabase();
    }
}

其中JpaPersistConfig和DBUtility类都是单元测试之EmbeddedPostgres的内容。DBUtility用于开启和关闭Embedded Postgres,JpaPersistConfig用于加载实体类和JPA DAO层。

schema-test.sql是建表语句,data-test.sql是初始数据。

3、Activiti Unit Test

@Slf4j
public class ActivitiFlowTest extends AbstractActivitiTest {

    private static final String PROCESS_BPMN_PATH = "activiti.xml";
    private static final String PROCESS_PNG_PATH = "activiti.png";

    @Autowired
    private RepositoryService repositoryService;
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private HistoryService historyService;


    // start activiti process
    @Before
    public void testAlertPushDataToReview() {
        repositoryService.createDeployment().name("PROCESS-NAME")
                .addClasspathResource(PROCESS_BPMN_PATH).addClasspathResource(PROCESS_PNG_PATH)
                .deploy();
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("PROCESS-KEY");
        Assert.assertNotNull(processInstance);
    }

    @Test
    public void test() {
        doSomething...
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值