当前位置: 首页 > 知识库问答 >
问题:

单元测试Spring@Service bean包装Activiti RuntimeService

谢志用
2023-03-14

我正在尝试调用Activiti的RuntimeService来测试我的服务。查看博客和帖子,Activiti为测试而公开的唯一一件事是通过完成任务、设置流程变量等来测试Activiti引擎本身的可能性。我想通过模仿Activiti的RuntimeService、TaskService等服务来测试引擎之上的业务逻辑。我的服务方式如下:

@Override
public String getNextActivationStepUri(String activationCode) {
    ProcessInstance processInstance =
            runtimeService.createProcessInstanceQuery().variableValueLike(ACTIVATION_CODE, activationCode)
                    .includeProcessVariables().singleResult();
    if (processInstance != null) {
        if (CLICK_ACTIVATION_LINK.equals(processInstance.getActivityId())) {
            return handleUserActionTask(processInstance);
        }
    }
    ...
}

private String handleUserActionTask(ProcessInstance processInstance) {
    Task task =
            taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId())
                    .active().singleResult();
    if (task != null) {
        taskService.complete(task.getId());
        Task nextTask =
                taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId())
                        .active().singleResult();
        if (nextTask != null) {
            return createActivationFormDataUri(processInstance, nextTask.getTaskDefinitionKey());
        } ...
}

有没有关于如何模拟这些类似生成器的服务调用(createProcessInstanceQuery.variableValueLike.includeProcessVariables…)的建议对于任务和运行时服务?我想断言,有效的URI是作为方法调用的返回提供的。

共有1个答案

张建华
2023-03-14

测试代码的第一个选项是集成测试。使用内存数据库,启动BPM进程,并用实际实现测试代码。对于这些测试,使用Spring核心和org.activiti.spring.impl.test.SpringActivitiTestCase。

测试代码的第二个选项是使用mock进行单元测试。您可以使用mock引擎(Mockito、EasyMock等)来创建mock并修改其行为。

 类似资料:
  • 我如何测试我的OSGI包?我使用的是基于Eclipse Equinox的Kura。我说的是单元测试,而不是集成测试,因为我想在检查导出的服务之前先检查应用程序类和逻辑。 最好的方法是什么? null 我可以使用什么样的工具?朱尼特? 谢谢并致以最良好的问候!

  • 我试图学习如何在spring中使用Java8进行单元测试/mockito测试,但遇到了一些问题。我试图测试我的方法findUserById,但它一直运行false。可选类型问题是一个问题,但可能已经解决了这些问题。然而,它仍然是错误的。我的其他测试都是有效的,所以这只是一个顽固的测试。我将感谢你的帮助。

  • Android Studio 1.1 添加了单元测试支持,详细请看 Unit testing support。本章的其余部分描述的是 “instrumentation tests”。利用 Instrumentation 测试框架可以构建独立的测试 APK 并运行在真实设备(或模拟器)中进行测试。

  • 英文原文:http://emberjs.com/guides/testing/unit/ 单元测试用于测试代码的一个小片段,确保其功能正常。与集成测试不同,单元测试被限定在一个范围内,并且不需要Ember应用运行。 全局 vs 模块 过去如果没有作为一个全局变量加载整个Ember应用,要对应用进行测试非常困难。通过使用模块(CommonJS,AMD等)来编写应用,可以只加载被测试的部分,而不用将其

  • 注意附加的'.test'以区分包并避免拆分包问题。 通常,会有一些措施来确保测试类不会最终出现在构建的bundle jar中。 这里添加了一个单独的bundle,name后缀“.test”,这是常规做法。 这对于第二种选择最为明显,即拥有单独的测试包。测试包中的测试必须导入-打包待测类,而待测包也必须导出-打包所有所述待测类。 因此,显而易见的解决方案是倾向于在bundle源代码中进行单元测试,但